atomas42
Goto Top

SQL 3 Tabellen zusammenfassen

Hallo,

ich habe von einiger Zeit mal ein kleines Angebotsprogramm mit Access geschrieben, was ich gerne erweitern würde.
Ich importiere ein txt Datei die ich dann weiterverarbeite

Die Textdatei sind wie folgt aus

ArtNr. HerstNr Hersteller Beschreibung Preis Bestand


ich möchte nun noch 2 Lieferanten hinzufügen, wobei die Tabelle natürlich anders aussieht.

Am Ende sollte die Tabelle so aussehen

ArtNr. HerstNr Hersteller Beschreibung Preis1 Bestand1 Preis2 Bestand2 Preis3 Bestand3


Ich nehme Tabelle 1 schaue nach der Herstellernummer und vergleiche die mit Tabelle 2 und 3.
Ist die drin, trage den Preis dementsprechend bei Preis2 Bestand2 und Preis3 Bestand3 ein
Ist die nicht drin gibt es halt nur Preis1 Bestand1
Dann kann es in Tabelle 2 und 3 ja Sachen geben die in Tabelle1 nicht drin sind. Diese sollen
dann auch mit aufgelistet werden. Dann bleibt halt Preis1 Bestand1 leer

Kann man sich sowas in SQL erstellen lassen? Also ich meine mit einem Befehl?
Oder muss ich das Programmieren in der Art wie:
Schaue Zeile1 Herstellernummer von Tabelle1, wenn du die in Tabelle2 findest, trage Preis und Bestand in Preis2 Bestand2 ein
Schaue Zeile1 Herstellernummer von Tabelle1, wenn du die in Tabelle3 findest, trage Preis und Bestand in Preis3 Bestand3 ein
Schaue Zeile2 Herstellernummer von Tabelle1, wenn du die in Tabelle2 findest, trage Preis und Bestand in Preis2 Bestand2 ein
Schaue Zeile2 Herstellernummer von Tabelle1, wenn du die in Tabelle3 findest, trage Preis und Bestand in Preis3 Bestand3 ein
usw.
Das ganze dann dann mit Tabelle2 und 3 genauso

Ich weiß nicht wie ich das anders erklären könnte, ich hoffe, man kann mir ein wenig folgen.


Freundliche Grüße

Thomas

Content-ID: 3706278539

Url: https://administrator.de/contentid/3706278539

Ausgedruckt am: 05.11.2024 um 04:11 Uhr

bloodstix
bloodstix 20.08.2022 um 11:25:21 Uhr
Goto Top
Hallo,
Ein einfacher leftjoin tuts da eigentlich, Google mal.

Grüße
Bloody
akretschmer
akretschmer 20.08.2022 um 16:53:35 Uhr
Goto Top
Du verfolgst ein komplett kapottes Tabellendesign. Kommt ein weiterer Hersteller dazu, mußt Du nicht nur die Tabelle erneut ändern, sondern auch alle bisherigen SQL-Statements. Das skaliert nicht.
tl;dr
Beschäftige Dich mit Normalisierung.
em-pie
em-pie 20.08.2022 aktualisiert um 17:17:13 Uhr
Goto Top
Moin,
Zitat von @akretschmer:

Du verfolgst ein komplett kapottes Tabellendesign. Kommt ein weiterer Hersteller dazu, mußt Du nicht nur die Tabelle erneut ändern, sondern auch alle bisherigen SQL-Statements. Das skaliert nicht.
tl;dr
Beschäftige Dich mit Normalisierung.

+1

Erweitere die Tabelle auf folgendes Design
ArtNr. HerstNr. Beschreibung Lieferant Preis Bestand
4711 123456 Toller Artikel 0815 22,33 99
4711 123456 Toller Artikel 0816 33,22 11
4711 123456 Toller Artikel 0817 44,11 4

Das wäre mal Schritt 1

Später kannst du die Tabelle mit sich selbst als Subselect joinen, die aber vorher mit PIVOT() umstellen. Kommen später noch fünf oder sechs Lieferanten hinzu, erweitert sich dein Ergebnis automatisch und du musst die Tabelle nicht permanent erweitern.

Edit: du kannst vorallem später viel bessere Auswertungen fahren:
"Zeige mir, was der Lieferant 0815 alles zu welchem Preis liefern kann"
"Zeige mir, zu allen Artikel den günstigsten Lieferanten"
...

Gruß
em-pie

P.S. ich gehe davon aus, dass hinter MS ACCESS eine MS SQL-Datenbank hängt....
ukulele-7
ukulele-7 22.08.2022 um 10:52:37 Uhr
Goto Top
Hier muss wirklich das Grundprinzip Relationaler Datenbanken erstmal klar sein. Normalisierung klingt erstmal öde, ist aber essentiell zum Verständnis. Guck dir einfach die Beispiele auf Wikipedia an.

Zitat von @em-pie:

P.S. ich gehe davon aus, dass hinter MS ACCESS eine MS SQL-Datenbank hängt....
Ich vermute mal er hat die Tabellen einfach in Access...
atomas
atomas 22.08.2022 um 12:14:43 Uhr
Goto Top
Vielen Dank für die Infos.

Ich werde mich da wohl dann mal schlau lesen müssen.
Ja, das ist einfach nur eine Tabelle in Access.
em-pie
em-pie 22.08.2022 um 12:46:02 Uhr
Goto Top
@ukulele-7
Habe ich mir eigentlich schon fast gedacht, war aber optimist und hab es mal provokativ unterstellt face-smile


Zitat von @atomas:
Ich werde mich da wohl dann mal schlau lesen müssen.
Ja, das ist einfach nur eine Tabelle in Access.
Bzgl. Pivot dann hier etwas Lesestoff:
https://support.microsoft.com/de-de/office/erstellen-von-pivottable-oder ...

Falls das für dich überhaupt zum Tragen kommt. Das hängt ja immer etwas von den Berichten ab, die man benötigt.


Solltest du noch fragen haben, einfach melden face-smile