Een nested list uit de database trekken?
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
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
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
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
----------------------------
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)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
type 1 (type1 count)
- naam1
- naam2
- naam3
type 2 (type2 count)
- naam4
- naam5
type3 (type3 count)
- naam6
- naam7
- naam8
- naam9
- naam1
- naam2
- naam3
type 2 (type2 count)
- naam4
- naam5
type3 (type3 count)
- naam6
- naam7
- naam8
- naam9
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G
dit?
Misschien zoiets als dat omschrijft hetzelfde (multi-level, zonder joins) als de link die ik opgaf in mijn post.. Ik zal eens de code goed gaan lezen, mischien zijn er wel wat dingen uit te halen. Mijn probleemstelling is dus iets anders voor zover ik nu kan zien.
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G
$clubs[$row['clubtype']][] = $row['clubnaam'];
daarna doe je meer eens var_dump($clubs); om te zien wat er nu uit is gekomen..
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Waarschijnlijk is het wel net iets te veel moeite om voor zo'n simpele toepassing helemaal te bestuderen.
Wat ook zeer interessant is: Waarschijnlijk is het wel net iets te veel moeite om voor zo'n simpele toepassing helemaal te bestuderen.
Emmanuel Delay schreef op 29.05.2009 18:53:
Wat ook zeer interessant is: http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Lees eens z'n begin post.
ah ja.
hoe kan dit op mijn naam staan, terwijl ik gisteren de hele dag niet thuis was????
Dat zijn twee verschillende loogins
Heh, grappig.
Iemand trouwens al een suggestie voor deze probleemstelling?
"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.
Quote:
het foutieve gebruikt van GROUP BY in de query
Wat is er precies foutief aan? Waarom hoort ie er niet thuis?
Quote:
Welk Probleem?
Wat snap je niet aan mijn vraag?
Quote:
Dat is geheel afhankelijk van de query
Tja.. dat is duidelijk.
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G
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.
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..
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G
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...
Quote:
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?"..
Quote:
En een 2de query - voor de count - is nergens voor nodig, je kan het af met 1 query
Waar zie je mij dat zeggen?
Quote:
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.
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G