phpbar.de logo

Mailinglisten-Archive

[php] OT Subquery in IF - Weisung einer SQ

[php] OT Subquery in IF - Weisung einer SQ

Sebastian Mendel lists at sebastianmendel.de
Die Mar 10 11:27:31 CET 2009


On 10.03.2009 11:08, Stephan Krauß wrote:
> Hallo !
>
> Ich plage mich mit folgender SQL.
> Ich habe eine Tabelle in der die Knoten eines Tree
> dargestellt sind. Ich rufe alle Datensätz der Tabelle ab
> und will zusätzlich mit der IF - Weisung ermitteln ob der
> Datensatz 'Kinder' hat. Leider komme ich nicht weiter.
>
>
> select id, parent, child, if( (select count(parent) from parent_child
> where child = parent), 'Knoten', 'Blatt' ) as knoten from parent_child
> order by parent

MySQL weiß doch hier gar nicht welche Felder aus welcher Tabelle kommen 
sollen, das musst du schon mit angeben


SELECT
   `parent_child`.`id`,
   `parent_child`.`parent`,
   `parent_child`.`child`,
   IF((
       SELECT COUNT(`child`.`child`)
       FROM `parent_child` AS `child`
       WHERE `child`.`parent` = `parent_child`.`child`),
     'Knoten', 'Blatt')
   AS `knoten `
FROM
   `parent_child`
ORDER BY
   `parent_child`.`parent`

irgendwie so ähnlich ...


aber du solltest das lieber mit einem JOIN lösen, und anstelle von 
'Knoten'/'Blatt' einfach die Kinder-Anzahl zurückgeben lassen.

SELECT
   `parent_child`.*
   COUNT(`child`.`child`) AS `childs`
FROM
   `parent_child`
LEFT JOIN
   `parent_child` AS `child`
ON
   `child`.`parent` = `parent_child`.`child`
GROUP BY
   `parent_child`.`id`
ORDER BY
   `parent_child`.`parent`


irgendwie so ähnlich ...


-- 
Sebastian Mendel

php::bar PHP Wiki   -   Listenarchive