Hoi iedereen, ik zit al een aantal dagen met het volgende probleem:
Ik wil zeg maar een gebruikers tabel dynamisch uit kunnen breiden, dit wilde ik doen aan de hand van labels zeg maar. Hiervoor heb ik de volgende tabellen gebruikt (enkel relevante items heb ik vermeld):
label
id
name
label_value
id
memberid
labelid
value
Hier wat voorbeeld records:
Ik gebruik MySQL 5.1 als RDBMS. Wat ik nu wil bereiken is een query die alle labels weergeeft (select * from label; bij wijze van spreke) met daarbij het aantal values zeg maar. Nu had ik daarvoor deze query geschreven:
En dan eindelijk het probleem
. Deze query geeft kortweg dit resultaat terug:
Dit resultaat klopt gewoon, kijk maar naar de label_value tabel. Echter! Waar is het vierde label gebleven? Dit probleem doet zich dus ook voor als ik zeg maar de hele label_value tabel leeg maak, dan zie ik alleen het - voor de database - eerste label als resultaat met een count van 0. Daarna komt er dus geen resultaat meer, dit zou dus wel moeten aangezien er meerdere label tupels zijn.
Wat ik al heb geprobeerd: ipv een left join een inner join (maar ook dit wil je niet, als er geen 'resultaten' zijn dan wil je het label item wel meenemen). En een heleboel varianten op de group waarde, maar niets mocht baten... Help
.
Ik wil zeg maar een gebruikers tabel dynamisch uit kunnen breiden, dit wilde ik doen aan de hand van labels zeg maar. Hiervoor heb ik de volgende tabellen gebruikt (enkel relevante items heb ik vermeld):
label
id
name
label_value
id
memberid
labelid
value
Hier wat voorbeeld records:
| label | |
| id | name |
| 1 | Kleur ogen |
| 2 | Favoriete voetbalclub |
| 3 | Beste forum |
| 4 | Gewicht |
| label_value | |||
| id | memberid | labelid | value |
| 1 | 12 | 1 | Blauw |
| 2 | 64 | 1 | Bruin |
| 3 | 96 | 1 | Groen |
| 4 | 42 | 2 | PSV |
| 5 | 534 | 2 | PSV |
Ik gebruik MySQL 5.1 als RDBMS. Wat ik nu wil bereiken is een query die alle labels weergeeft (select * from label; bij wijze van spreke) met daarbij het aantal values zeg maar. Nu had ik daarvoor deze query geschreven:
SQL:
1
2
3
4
5
| select l.id, l.name, count(v.memberid) from label l left join label_value v on l.id = v.labelid group by v.labelid; |
En dan eindelijk het probleem
| id | name | count(v.memberid) |
| 3 | Beste forum | 0 |
| 1 | Kleur ogen | 3 |
| 2 | Favoriete voetbalclub | 2 |
Dit resultaat klopt gewoon, kijk maar naar de label_value tabel. Echter! Waar is het vierde label gebleven? Dit probleem doet zich dus ook voor als ik zeg maar de hele label_value tabel leeg maak, dan zie ik alleen het - voor de database - eerste label als resultaat met een count van 0. Daarna komt er dus geen resultaat meer, dit zou dus wel moeten aangezien er meerdere label tupels zijn.
Wat ik al heb geprobeerd: ipv een left join een inner join (maar ook dit wil je niet, als er geen 'resultaten' zijn dan wil je het label item wel meenemen). En een heleboel varianten op de group waarde, maar niets mocht baten... Help