Ik weet niet zo goed hoe ik dit het beste in PHP voor elkaar krijg. Een foreach loopje door de records binnen een foreach door de types gaat het wellicht doen. Maar kan dat niet veel efficienter?Ik dacht dat zoiets een 'nested list' heet, maar kan er bijn niets over vinden.

Ik heb het volgende (http://dev.mysql.com/tech-resources/articles/hierarchical-data.html) al doorgelezen. Het was zeer leerzaam, maar niet wat ik nodig heb,

- Is de onderstaande query de beste aanpak? Kan dit beter?
- Hoe kan ik in PHP het beste (kwa performance) de onderstaande output bereiken?

Mijn query

SELECT 
    clubs.id as clubid, 
    clubs.name as clubname, 
    club_types.name as clubtype 
FROM 
    clubs
INNER JOIN
    club_types 
ON 
    club_types.id = clubs.club_type_id
GROUP BY 
    clubtype


Query resultaat:

clubid | clubname | clubtype
----------------------------
1 | naam1 | type1
2 | naam2 | type1
3 | naam3 | type1
4 | naam4 | type2
5 | naam5 | type2
6 | naam6 | type3
7 | naam7 | type3
8 | naam8 | type3
9 | naam9 | type3

Gewenste output (php)

type 1 (type1 count)
 - naam1
 - naam2
 - naam3
type 2 (type2 count)
 - naam4
 - naam5
type3 (type3 count)
 - naam6
 - naam7
 - naam8
 - naam9
Die GROUP BY hoort er in ieder geval niet in thuis!

"Iemand trouwens al een suggestie voor deze probleemstelling?"
Welk Probleem - muz van het foutieve gebruikt van GROUP BY in de query -?

- Is de onderstaande query de beste aanpak? Kan dit beter?
Dan moet je wel een correcte query schrijven, zonder group by die het resultaat zodanig teruggeeft dat het met 1 if in de while loop kan komen tot de gewenste output
- Hoe kan ik in PHP het beste (kwa performance) de onderstaande output bereiken?
Dat is geheel afhankelijk van de query
Jeroen schreef op 30.05.2009 15:01

Iemand trouwens al een suggestie voor deze probleemstelling?

Toevallig die van mij al es geprobeert?
Dat is een niet performace gerichte oplossing.
het foutieve gebruikt van GROUP BY in de query

Wat is er precies foutief aan? Waarom hoort ie er niet thuis?

Welk Probleem?

Wat snap je niet aan mijn vraag?

Dat is geheel afhankelijk van de query

Tja.. dat is duidelijk.
Wat is er precies foutief aan? Waarom hoort ie er niet thuis?
in feite behoor je dat al te weten, want dat hoort bij de basiskennis

GROUP BY komt alleen om de hoek kijken indien er aggregate functions gebruikt worden.

"Wat snap je niet aan mijn vraag?"
Wel ik snap zo ie zo al niet waarom je hiervoor een topic aanmaakt, het enige problemen welke je hebt:
1. basiskennis SQL is te laag
2. je zelf blijkbaar geen zin hebt om er verder over na te denken dan noodszakelijk is.
@Noppes

tjonge was doe je onaardig. Als je niet wil reageren is dat niet nodig hoor.

1) Als je goed gelezen had zag je dat ik in mijn output (type1 count) heb staan.. Dit is een aggregate functie, en dus is group by wel nodig (welliswaar niet bij die specifieke query, maar wel bij de 'te maken' query.

2) Dat mijn basiskennis MySQL te laag is kan kloppen. Dat is één van de redenen waarom ik op deze site kom. Verder is het toch niet verboden om een topic te starten als je iets niet weet.. Sterker nog, dat is de reden om een topic te starten.

3) Waarop maak je uit dat ik geen zin heb om er over na te denken? Ik vind het juist leuk om hier over na te denken. Ik vraag geen kant-en-klaar stukje code. Ik wil een begrip krijgen van de werking van zo'n type opzet. Ook heb ik aangegeven in mijn topic wat ik al gelezen had om het probleem proberen op te lossen.

Jij snapt mischien niet waarom ik hier een topic voor aanmaak. Ik snap niet waarom jij uberhaubt een reactie geeft.

@Hipska

ja zo werkt het inderdaad,, Alleen daarmee kom ik in de knoop met mijn MVC opzet..
Je moet geen topic's openen waarop aannames van toepassing zijn!

En een 2de query - voor de count - is nergens voor nodig, je kan het af met 1 query

Voor de rest is het een feit dat je je probleem - ookal is het niet het probleem welke jij denkt dat je aanhaalt - oplost als je leert logisch vooruit te denken.

Daar laat ik het maar bij...

Je moet geen topic's openen waarop aannames van toepassing zijn!

Waarom niet? Je kan de kern van een probleem toch wel beantwoorden? Met jou houding zou je eerst aan iedereen vragen moeten gaan stellen als "Staat je PC al aan?", "Heb je de browser wel opgestart?", "Sla je het bestand wel op?"..

En een 2de query - voor de count - is nergens voor nodig, je kan het af met 1 query

Waar zie je mij dat zeggen?

Voor de rest is het een feit dat je je probleem - ookal is het niet het probleem welke jij denkt dat je aanhaalt - oplost als je leert logisch vooruit te denken.

euhm... Daar kan ik geen chocolade van maken.

Waarschijnlijk moet je mijn vraag nog eens lezen, dan snap je wellicht ook wat ik bedoel.

Reageren