Hi,
Wie würde dann das Subselect aussehen?
Eigentlich keine Raketenphysik, dass könntest du anhand der Dokumentation deines DBMS eigentlich herausfinden. Aber ich will mal nicht so sein:
SELECT
t1.ID,
t2.Nummer,
(
SELECT Spalte3
FROM Tabelle3
WHERE Tabelle3.Spalte5 = t1.ID AND Tabelle3.Spalte6 = t2.Nummer
) AS Spalte3,
(
SELECT Spalte4
FROM Tabelle3
WHERE Tabelle3.Spalte5 = t1.ID AND Tabelle3.Spalte6 = t2.Nummer
) AS Spalte4
FROM tabelle1 t1
JOIN tabelle2 t2 ON t1.ID = t2.ID
WHERE t1.Spalte1 != 1
Und was wäre, wenn versehentlich eine 1:n Beiehung aufträte?
Es kommt drauf an. Obiges Statement würde eine Fehlermeldung liefern, welche etwa so lauten würde: "Subquery returns more than one row".
Die Lösung wäre, dafür zu sorgen, dass nur ein Result in den Subqueries zurückkommt. Entweder also die Subqueries einschränken mit ORDER BY/LIMIT
, oder eine Aggregatfunktion verwenden (z.B. MAX/MIN/..., wenn du ein bestimmtes haben willst, oder z.B. GROUP_CONCAT
, wenn du alle (mit einem optionalen Separierer) haben willst).
Bis die Tage,
Matti