Matti Mäkitalo: Aus 2 mach 1? Subquery gesucht

Beitrag lesen

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