Array in een MySQL query?
p.s. Ik gebruik veel uitgebreidere tabellen, ik heb mijn vraag proberen te ontdoen van alle niet nuttige info.
ITEMS TABEL
Code (php)
1
2
3
4
5
2
3
4
5
id | naam
----------------------------------------
0 | aardappelen
1 | bloemkool
2 | spaghetti
----------------------------------------
0 | aardappelen
1 | bloemkool
2 | spaghetti
WAARDES TABEL
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
id | item_id | datum | waarde
----------------------------------------
0 | 0 | 16-01-2009 | 33
1 | 0 | 17-01-2009 | 87
2 | 0 | 18-01-2009 | 41
3 | 1 | 16-01-2009 | 34
4 | 1 | 17-01-2009 | 51
5 | 2 | 16-01-2009 | 58
----------------------------------------
0 | 0 | 16-01-2009 | 33
1 | 0 | 17-01-2009 | 87
2 | 0 | 18-01-2009 | 41
3 | 1 | 16-01-2009 | 34
4 | 1 | 17-01-2009 | 51
5 | 2 | 16-01-2009 | 58
GEWENSTE QUERY
Code (php)
1
2
3
4
5
2
3
4
5
naam | waarde_array
----------------------------------------
aardappelen | 33, 87, 41
bloemkool | 34, 51
spaghetti | 58
----------------------------------------
aardappelen | 33, 87, 41
bloemkool | 34, 51
spaghetti | 58
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G
Ik mag hopen dat jouw datums niet zijn opgeslagen zoals je ze hierboven hebt genoteerd, dat zijn namelijk geen datums. Mocht dat wel het geval zijn, ga dan z.s.m. jouw database ombouwen en ga échte datums gebruiken voordat je hopeloos in de shit zit. Datums sla je op in een veld van het type DATE en die eist het ISO-formaat yyyy-mm-dd, bv. 2009-03-13.
Ik zou dit kunnen doen met 'ad-hoc' php, maar dan lukt het mij niet volgens het MVC principe. Dan zou ik namelijk binnen mijn VIEW nog een extra query pér item moeten uitvoeren.
Uiteindelijk word de waarde array omgezet in een grafiek... dan krijg je dus zoiets als dit;
Code (php)
1
2
3
4
5
2
3
4
5
foreach ($items AS $item)
{
echo $item['naam'];
echo maak_grafiek($item['waarde_array']);
}
{
echo $item['naam'];
echo maak_grafiek($item['waarde_array']);
}
Het doel is dus eigenlijk; de gewenste query. Ik kan hem dan zelf omzetten naar een grafiek.
Stel ik mijn vraag wel goed?
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G
MySQL kent geen array-datatype (PostgreSQL en andere databases kennen die wel), maar binnen PHP (en andere talen) zal die "array" gewoon een string zijn. Gebruik deze array's dan ook uitsluitend binnen de database en niet daarbuiten, dat is vragen om problemen.
MVC heeft niets te maken met 1 query, wanneer jij tig queries nodig hebt, dan zul jij tig queries moeten uitvoeren. Daar zal geen enkele MVC moeilijk over doen, het is de gewoonste zaak van de wereld. Databases geven records terug, dus zul je records moeten gebruiken. De heerlijke mismatch tussen objecten en relationele data...
Dit zou toch ook moeten lukken in een subquery? Dat is mijn vraag eigenlijk ook.
Gewijzigd op 01/01/1970 01:00:00 door Jeroen G
Code (php)
1
2
3
2
3
SELECT i.item_id AS item_id, i.naam AS item_naam, w.waarde AS item_waarde FROM items i, waarden w
WHERE i.id = waarde.item_id
ORDER BY w.item_id ASC
WHERE i.id = waarde.item_id
ORDER BY w.item_id ASC
Hoe je nu met PHP die array afhandelt mag je zelf weten.
Iets als
?
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z