Zit ik al effe aan bezig en mijn SQL is niet goed genoeg om het te doen werken:
Table "Group" met daarin een ID
Table "Results" met daarin een key naar Group en een "Type" field.
Er zijn twee values mogelijk voor dat Type attribute (1 / 0).
Nu wil ik dus per "Group" weten hoeveel er aantal Type fields 0 en 1 zijn. (in 1 row)
Waarschijnlijk heel simpel maar mijn kop draait dol:)
Dit heb ik al:
SELECT g.name, g.id, COUNT(r.id)
FROM groups AS g LEFT JOIN results AS r ON g.id = r.groupid
GROUP BY g.id, r.type
Maar dan krijg ik dus per group 2 rows. ook zie ik niet in hoe ik een "conditie" er kan invoegen aan gezien dit slecht voor 1 gaat werken.
in "lamers" SQL:
FOR EACH GROUP RETURN
GROUP.id
COUNT(Results.type == '0')
COUNT(Results.type == '1')
Heb al heelder SQL tuts doorzocht maar het gaat me niet vlot af
.
Tuurlijk vind ik het dan net iets later zelf: Mooi is het niet en snel nog minder dnek ik:
SELECT
g.id,
SUM(CASE WHEN r.type = 0 THEN 1 ELSE 0 END) as count_type0,
SUM(CASE WHEN r.type = 1 THEN 1 ELSE 0 END) as count_type1
FROM groups AS g LEFT JOIN results AS r ON g.id = r.groupid
GROUP BY g.id, r.type
dus snellere mogelijkheden altijd welcome
.
Table "Group" met daarin een ID
Table "Results" met daarin een key naar Group en een "Type" field.
Er zijn twee values mogelijk voor dat Type attribute (1 / 0).
Nu wil ik dus per "Group" weten hoeveel er aantal Type fields 0 en 1 zijn. (in 1 row)
Waarschijnlijk heel simpel maar mijn kop draait dol:)
Dit heb ik al:
SELECT g.name, g.id, COUNT(r.id)
FROM groups AS g LEFT JOIN results AS r ON g.id = r.groupid
GROUP BY g.id, r.type
Maar dan krijg ik dus per group 2 rows. ook zie ik niet in hoe ik een "conditie" er kan invoegen aan gezien dit slecht voor 1 gaat werken.
in "lamers" SQL:
FOR EACH GROUP RETURN
GROUP.id
COUNT(Results.type == '0')
COUNT(Results.type == '1')
Heb al heelder SQL tuts doorzocht maar het gaat me niet vlot af
offtopic:
normaal gebruik ik Persitent Storage Frameworks die de SQL voor me maken
normaal gebruik ik Persitent Storage Frameworks die de SQL voor me maken
Tuurlijk vind ik het dan net iets later zelf: Mooi is het niet en snel nog minder dnek ik:
SELECT
g.id,
SUM(CASE WHEN r.type = 0 THEN 1 ELSE 0 END) as count_type0,
SUM(CASE WHEN r.type = 1 THEN 1 ELSE 0 END) as count_type1
FROM groups AS g LEFT JOIN results AS r ON g.id = r.groupid
GROUP BY g.id, r.type
dus snellere mogelijkheden altijd welcome
[ Voor 27% gewijzigd door hobbit_be op 12-12-2003 15:53 ]