SELECT g.gebruikers_naam,
gr.groeps_naam,
IF(gg.gebruikers_id IS NULL,0,1) AS lidmaatschap
FROM
(SELECT ge.gebruikers_id,
go.groeps_id
FROM gebruikers AS ge
CROSS JOIN groepen AS go
) ggr
JOIN
gebruikers g ON ggr.gebruikers_id = g.gebruikers_id
JOIN
groepen gr ON ggr.groeps_id = gr.groeps_id
LEFT JOIN gebruikers_groepen gg
ON ggr.gebruikers_id = gg.gebruikers_id
AND ggr.groeps_id = gg.groeps_id
ORDER BY g.gebruikers_id, gr.groeps_id
Iemand enig idee? Zit nu al een paar dagen te klooien zeg maar, maar het is steed trial and error... En helaas heb ik niet zoveel verstand van PHP dat me dit nou een makkie is.
"Maar wat als ik in lijstje 1 nou een groepnaam en een groepid wil? Hoe krijg ik dit dan in die foreach?
Toevoeging op 18/02/2014 09:49:35:
Iemand een idee hoe ik bij lijstje1 een extra veld kan meegeven in de foreach? Dus bijvoorbeeld het groepid (&groepnaam)?"
Mysql functies zijn deprecated. Backticks? Sql Injection? Hm..
<?php
while($row = mysql_fetch_array($query))
{
$getUserGroups[] = Array('name'=>$row['g.groupname'],'id'=>$row['groupid']);// Waar komt g vandaan? moet dit group zijn?
}
Oké de query is wellicht wat moeilijker te begrijpen, maar uiteindelijk wordt het veel simpeler als je in php met array's gaat lopen klooien.
SELECT g.gebruikers_naam,
gr.groeps_naam,
IF(gg.gebruikers_id IS NULL,0,1) AS lidmaatschap
FROM
(SELECT ge.gebruikers_id,
go.groeps_id
FROM gebruikers AS ge
CROSS JOIN groepen AS go
WHERE ge.gebruikers_id = 666
) ggr
JOIN
gebruikers g ON ggr.gebruikers_id = g.gebruikers_id
JOIN
groepen gr ON ggr.groeps_id = gr.groeps_id
LEFT JOIN gebruikers_groepen gg
ON ggr.gebruikers_id = gg.gebruikers_id
AND ggr.groeps_id = gg.groeps_id
ORDER BY g.gebruikers_id, gr.groeps_id