Mailinglisten-Archive |
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