Ben al een uurtje aan het zoeken om het in 1 query to krijgen maar lukt me niet.
Ik heb een tamelijk complexe query (2 database, 12 self-join, 4 outer joins etc) maar zover geen probleem.
Mijn result set is gewoon een set of rows waarvan 1 een foreign-key is naar een andere table 'choices'.
de choice 'table'
telkens als een user zijn eerste of tweede keuze verandered komt er een extra row bij in de choice tables (previous_id geeft snel weer welke id (in choice) de vorige keuze was.
het komt er nu op neer om alleen de laatste 'entry' values voor first_choice and second_choice bij te voegen aan de grote results set (de grote query is 1 grote samenvatting van de current status van het systeem)
nu dacht ik dat ik een LEFT OUTER JOIN kon toevoegen met een GROUP BY op choice.id en idd met aggregate kan ik de 'LAST(choice.id)' terug krijgen... maar hoe krijg ik IPV de choice.id de Values van first_choice en second_choice terug... ?
Zover ik kan zien kan ik dit doen om voor elke value die ik nodig heb een sub select te doen (maar dan moet ik dus 2 keer net zelfde query doen / row)...
Iemand een idee - ik denk dat ik me blindstaar op een heel simpel probleem... (hence de tweakers check)
Ik heb een tamelijk complexe query (2 database, 12 self-join, 4 outer joins etc) maar zover geen probleem.
Mijn result set is gewoon een set of rows waarvan 1 een foreign-key is naar een andere table 'choices'.
code:
1
| id, choice_id, name, firstname, old_choice, .... (35 andere velden) |
de choice 'table'
code:
1
| id, created, user_id, first_choice, second_choice, previous_id. |
telkens als een user zijn eerste of tweede keuze verandered komt er een extra row bij in de choice tables (previous_id geeft snel weer welke id (in choice) de vorige keuze was.
het komt er nu op neer om alleen de laatste 'entry' values voor first_choice and second_choice bij te voegen aan de grote results set (de grote query is 1 grote samenvatting van de current status van het systeem)
nu dacht ik dat ik een LEFT OUTER JOIN kon toevoegen met een GROUP BY op choice.id en idd met aggregate kan ik de 'LAST(choice.id)' terug krijgen... maar hoe krijg ik IPV de choice.id de Values van first_choice en second_choice terug... ?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| SELECT id LAST(choice.id) name email ? value of first_choice of the last row choice.id ? ... FROM users LEFT JOIN .... LEFT JOIN ... ... (nog een heleboel andere ZONDER group by of iets 'speciaals') LEFT JOIN choice ON choice.user_id = id ... GROUP BY choice.id .... WHERE.... ORDER BY choice.id ASC |
Zover ik kan zien kan ik dit doen om voor elke value die ik nodig heb een sub select te doen (maar dan moet ik dus 2 keer net zelfde query doen / row)...
Iemand een idee - ik denk dat ik me blindstaar op een heel simpel probleem... (hence de tweakers check)