Hallo liebe Foren Gemeinde,
ich grübel gerade über einer SQL Abfrage und habe mehrere Lösungsansätze aus dem Ärmel geschüttelt, wobei aber nicht das rauskam was mir vorschwebte.
Ich mache eine Abfrage über mehrere Tabellen, wobei in den Folgetabellen mehrere Resultate vorhanden sein können. Da ich aber nur das erste Resultat benötige, habe ich ein "SELECT TOP 1" eingefügt, anstatt einfach nur mit einem Left Join zu arbeiten. Benutze ich aber das TOP 1, dann sind die Felder mit den Resultaten aus der Tabelle leer.
Zur Veranschaulichung - Beispiel:
So kriege ich alle Sätze zurück, ich möchte aber nur den ersten haben. Die eigentliche Abfrage geht über 8 Tabellen. Dies hier oben stellt aber das grundlegende Problem dar. Schreibe ich es wie folgt, dann sind die Resultate leer:
Unabhängig davon wie die SQL aussieht - das dient gerade der Veranschaulichung worum es mir geht. Werkstoff etc ist mit "Top 1" leer. Der SQL im left Join Einzeln ausgeführt gibt ein Ergebnis. Lasse ich das Top 1 weg, dann gibt es auch Ergebnisse.
Wo habe ich den Denkfehler, kann mir jemand einen Schubs geben ?
Gruß
ich grübel gerade über einer SQL Abfrage und habe mehrere Lösungsansätze aus dem Ärmel geschüttelt, wobei aber nicht das rauskam was mir vorschwebte.
Ich mache eine Abfrage über mehrere Tabellen, wobei in den Folgetabellen mehrere Resultate vorhanden sein können. Da ich aber nur das erste Resultat benötige, habe ich ein "SELECT TOP 1" eingefügt, anstatt einfach nur mit einem Left Join zu arbeiten. Benutze ich aber das TOP 1, dann sind die Felder mit den Resultaten aus der Tabelle leer.
Zur Veranschaulichung - Beispiel:
Code:
SELECT * FROM MAME03 LEFT JOIN MALA02 ON MAME03.FELD04=MALA02.FELD05 LEFT JOIN (SELECT MALA41.FELD03,MALA41.FELD45 AS Werkstoff,MALA41.FELD62 AS Zollsatz,MALA41.FELD49 AS ZollEinfuhr, MALA41.FELD50 AS ZollAusfuhr, MALA41.FELD54 AS Ursprungsland,MALA41.FELD17 AS Laenge1, MALA41.FELD18 AS Breite1, MALA41.FELD19 AS Hoehe1, MALA41.FELD20 AS GroeEinh1, MALA41.FELD23 AS Volumen1, MALA41.FELD24 AS VolumenEinh1, MALA41.FELD25 AS Gewicht1,MALA41.FELD26 AS GewEinh1,MALA41.FELD61 AS Verpackungsart FROM MALA41) AS MALA41 ON MAME03.FELD04=MALA41.FELD03 WHERE MAME03.FELD03=' 130'
Code:
SELECT * FROM MAME03 LEFT JOIN MALA02 ON MAME03.FELD04=MALA02.FELD05 LEFT JOIN (SELECT TOP 1 MALA41.FELD03,MALA41.FELD45 AS Werkstoff,MALA41.FELD62 AS Zollsatz,MALA41.FELD49 AS ZollEinfuhr, MALA41.FELD50 AS ZollAusfuhr, MALA41.FELD54 AS Ursprungsland,MALA41.FELD17 AS Laenge1, MALA41.FELD18 AS Breite1, MALA41.FELD19 AS Hoehe1, MALA41.FELD20 AS GroeEinh1, MALA41.FELD23 AS Volumen1, MALA41.FELD24 AS VolumenEinh1, MALA41.FELD25 AS Gewicht1,MALA41.FELD26 AS GewEinh1,MALA41.FELD61 AS Verpackungsart FROM MALA41) AS MALA41 ON MAME03.FELD04=MALA41.FELD03 WHERE MAME03.FELD03=' 130'
Wo habe ich den Denkfehler, kann mir jemand einen Schubs geben ?
Gruß