SQL Letzte Zeile in einem Left-Join abfragen

webfreak

New member
Guten Abend alle zusammen :)

Ich habe folgende SQL-Abfrage:

Code:
SELECT tabelle1.feld1, tabelle2.feld1
FROM tabelle1 
LEFT JOIN tabelle2 ON tabelle1.feld1=tabelle2.feld
Soweit eine ganz normaler Left-Join. Nun habe ich noch eine weitere Tabelle ("tabelle3"), aus welcher ich den letzten Datensatz für alle Zeilen in der obigen Abfrage übernehmen möchte. Das Ergebnis der Abfrage sollte dann etwa so aussehen:

Code:
tabelle1.feld1 | tabelle2.feld2 | tabelle3.feld2
Habt ihr eine Idee, wie ich das Problem lösen kann? Mein Ansatz wäre von "tabelle3" die MAX(id) abzufragen und davon das entsprechende Feld zu übertragen - nur finde ich keine technische Lösung :(

Herzlichen Dank!
 
Zuletzt bearbeitet:

webfreak

New member
Hat sich erledigt :) Lösung ist eigentlich sehr simpel:

Code:
SELECT tabelle1.feld1, tabelle2.feld1, tabelle3.feld2
FROM tabelle1 
LEFT JOIN tabelle2 ON tabelle1.feld1=tabelle2.feld
LEFT JOIN tabelle3 ON tabelle3.id=tabelle3.id
WHERE tabelle3.id = (
SELECT MAX(id) FROM tabelle3
)
 

Oi!Alex

Member
Code:
LEFT JOIN tabelle3 ON tabelle3.id=tabelle3.id
?

Also ist das wirklich gewollt? Wenn ja dann tut es auch

Code:
SELECT tabelle1.feld1, tabelle2.feld1, (SELECT feld2 FROM tabelle3 ORDER BY id DESC LIMIT 1)
FROM tabelle1 
LEFT JOIN tabelle2 ON tabelle1.feld1=tabelle2.feld
Gehe davon aus das tabelle3.id auto increment ist.
 

webfreak

New member
Hi,

so wie ich das sehe liegt der Vorteil bei deiner Abfrage darin, dass der Subquery nicht für jede Zeile wie bei mir ausgeführt werden muss?

Schönen Gruß.
 
Oben