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