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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3706278539
Url: https://administrator.de/contentid/3706278539
Ausgedruckt am: 05.11.2024 um 04:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
+1
Erweitere die Tabelle auf folgendes Design
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....
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.
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....
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.
Ich vermute mal er hat die Tabellen einfach in Access...
Ich vermute mal er hat die Tabellen einfach in Access...
@ukulele-7
Habe ich mir eigentlich schon fast gedacht, war aber optimist und hab es mal provokativ unterstellt
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
Habe ich mir eigentlich schon fast gedacht, war aber optimist und hab es mal provokativ unterstellt
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:Ich werde mich da wohl dann mal schlau lesen müssen.
Ja, das ist einfach nur eine Tabelle in Access.
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