Forum: SQL |
Thema:
Re: SELECT über drei Tabellen |
Von:
G. Guest (
03.03.2006 09:40) |
In der Tabelle Kontenbuch gibt es eben eine Nummer (Source No_). Diese Nummer gehört zu einem Debitor oder zu einem Kreditor oder auch zu beiden. Über diese Nummer will ich mir den Namen holen.
Hier mal ein kurzes Beispiel über den Aufbau der Tabellen:
Tabelle-Kontenbuch
ID LAGERPLATZ LAGERORT MENGE ERZEUGERNUMMER
1 Regal03 Halle02 20kg 50170
2 Regal02 Halle01 13kg 50180
3 Regal04 Halle07 34kg 50210
Tabelle-Debitoren
ID NAME ADRESSE
50170 Müller Musterstr. 17
50180 Schmidt Bahnhof 5
Tabelle-Kreditoren
ID NAME ADRESSE
50170 Müller Musterstr. 17
50210 Schneider Glückaufstr. 45
So sehen die Tabellen aus. Meine gewünschte Ausgabe soll dann folgendermaßen aussehen:
ID LAGERPLATZ LAGERORT MENGE ERZEUGERNUMMER NAME
1 Regal03 Halle02 20kg 50170 Müller
1 Regal03 Halle02 20kg 50170 Müller
2 Regal02 Halle01 13kg 50180 Schmidt
3 Regal04 Halle07 34kg 50210 Schneider
Wie du siehst, kann es auch doppelte Einträge geben in meiner Ausgabe.
Betreff |
Von |
Datum |
|
|
Re: SELECT über drei Tabellen
Hallo Guest,<br><br>das ganze kannst Du z.B. mit einer SubQuery<br>SELECT ID, ..., ISNULL((SELECT NAME FROM Tabelle-Debitoren WHERE ID = Tabelle-Kontenbuch.ERZEUGERNUMMER), (SELECT NAME FROM... |
|
|
|
|
|
Ansgar
Sommer
|
03.03.2006 10:34 |
|
|
Re: SELECT über drei Tabellen
Sorry, habe einen Logischen Fehler drin so sollte es richtig sein:<br>SELECT ID, ..., CASE (SELECT COUNT(ID) FROM Tabelle-Debitoren WHERE ID = Tabelle-Kontenbuch.ERZEUGERNUMMER) WHEN 0 THEN<br>(SELECT... |
|
|
|
|
|
Ansgar
Sommer
|
03.03.2006 10:36 |
|
|
Re: SELECT über drei Tabellen
Danke schon mal für deine Mühe aber ich hab da noch eine Frage zu deiner Abfrage. Der Teil mit WHEN und ELSE stellt doch ein ENTWEDER-ODER da. Was ist aber wenn die ID in der Tabelle-Debitoren UND der... |
|
|
|
|
|
G.
Guest
|
03.03.2006 10:47 |
|
|
Re: SELECT über drei Tabellen
Hier mal mein Ansatz den ich bisher habe, nicht geschockt sein!<br><br>SELECT [Entsorger AG$Waste Ledger Entry_1].[Source No_] AS [Herkunftsnr.], [Entsorger AG$Customer].Name, <br> ... |
|
|
|
|
|
G.
Guest
|
03.03.2006 10:53 |
|
|
Re: SELECT über drei Tabellen
Hallo Guest,<br><br>das war eigentlich schon gestern meine Frage bezüglich der doppelten ID's. Die Abfrage ist Jetzt so aufgebaut das die Tabelle-Kreditoren Vorrang hat eine Ander Lösung fällt mir dazu... |
|
|
|
|
|
Ansgar
Sommer
|
03.03.2006 10:56 |
|
|
Re: SELECT über drei Tabellen
Leider wird die komplette Tabellenlogik so von einem großen ERP-System vorgegeben. Da kann ich also nichts ändern.<br><br>Aber danke trotzdem für deine Mühen. |
|
|
|
|
|
G.
Guest
|
03.03.2006 11:00 |
|
|
Re: SELECT über drei Tabellen
Hallo Guest,<br><br>ich meine mit dem Out Join bekommst Du Hausgemachte Performence Probleme, ich gehe mal davon aus die Debitoren und Kreditoren evtl. einen gemeinsamen ID Schlüssel haben oder kann der... |
|
|
|
|
|
Ansgar
Sommer
|
03.03.2006 11:10 |
|
|
Re: SELECT über drei Tabellen
Ich ziehe jetzt nicht über bestehende Systeme her. Kann nur sagen das es ein großes, bekanntes ERP-System ist.<br>Es ist nicht egal ob die Daten aus der Tabelle Kreditor oder Debitor kommen, da es ja... |
|
|
|
|
|
G.
Guest
|
03.03.2006 11:21 |
|
|
Re: SELECT über drei Tabellen
Hallo Guest,<br><br>ich möchte auch nicht über bestehende System herziehen aber das Problem mit der Logik bleit denn noch.<br>Meinst Du mit doppeltnennungen das beide Namen als der aus den Kreditoren und... |
|
|
|
|
|
Ansgar
Sommer
|
03.03.2006 11:37 |
|
|
Re: SELECT über drei Tabellen
Genau, es gibt in dem System eben Personen die Debitoren sind und gleichzeitig auch mit ihrer Nummer Kreditoren sein können.<br>Dadurch bekomme und brauche ich hinterher eben auch doppelte Datensätze. |
|
|
|
|
|
G.
Guest
|
03.03.2006 11:42 |
|
|
Re: SELECT über drei Tabellen
Am besten Du wichst Dir erst einmal einen und dann kannste ja mal vor Deine Tür gehen und Deinen vollgewichsten Schwanz der nächst besten Frau zeigen. |
|
|
|
|
|
G.
Guest
|
03.03.2006 14:12 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!