EKKi: MySQL: Subselects übergreifend

Beitrag lesen

Mahlzeit JO,

SELECT

IFNULL(subcats, catid)
FROM
(SELECT t3.id AS catid FROM cats AS t3 WHERE t3.name='Akrobatik') AS ids,
(SELECT t1.name AS subcats  FROM cats AS t1  WHERE t1.subcategoryid = catid) AS names

  

> Warum kennt der zweite Subselect es nicht.  
  
Weil zuerst die Sub-Queries ausgewertet werden und deren Ergebnis dann in der äußeren Abfrage verwurstet wird. Das bedeutet aber zwangsläufig auch, dass die einzelnen Sub-Queries nichts voneinander wissen - insbesondere keine Spaltennamen oder -inhalte.  
  
  

> Hier die Tabelle Kategorien:  
  
Eine Tabelle "Kategorien" finde ich in Deinem SQL-Code nicht. Was soll das für eine sein?  
  
  

> Query-Pseudo:  
> Lies die ID der Kategorie mit dem Namen "Akrobatik" aus, anschließend lies alle Kategorien aus die als UnterkategorieID den Wert von "Akrobatiks"-ID haben. Wenn es Unterkategorien gibt, gebe sie zurück, wenn nicht, gebe die ID zurück.  
  
Warum versuchst Du es über Sub-Queries? Was hast Du gegen "klassische" JOINs? :-)  
  
  

> Ich möchte es irgendwie mit einem Query machen.  
  
Das geht ja auch:  
  
~~~sql
SELECT IFNULL(t1.name, t3.id) AS name  
  FROM cats      AS t3  
  LEFT JOIN cats AS t1 ON t1.subcategoryid = t3.id  
 WHERE t3.name = 'Akrobatik'

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|