Als voorbeeld twee tabellen: members en table2 (de echte tabellen/query zijn uiteraard groter):
members
table2
Ter verduidelijking: een member kan verschillende nickname's gebruiken, maar deze zijn allemaal gekoppeld aan hetzelfde account (members tabel) via het myid veld.
*date is een DATETIME veld, maar ik heb het hier wat eenvoudiger weergegeven.
Wat ik wil: het meest recente record voor elke member selecteren.
Het probleem: door MAX(table2.date) te gebruiken, krijg ik inderdaad de meest recente datum voor deze member, maar de rest van het resultaat is niet afkomstig uit dezelfde row. Ter illustratie, dit krijg ik terug:
222 john 3-3-2009 <- dit is de meest recente datum, maar de nickname (en myid) behoren tot het oudere record!
Dit is wat ik verwacht te krijgen:
222 johnnyboy 3-3-2009 <- de nickname is nu afkomstig uit dezelfde row als de meest recente datum
Dit is mijn query:
members
code:
1
2
3
4
| myid hours_played 111 1.5 222 0.8 333 2.4 |
table2
code:
1
2
3
4
5
| myid nickname date 111 peter 1-1-2009 222 john 2-2-2009 222 johnnyboy 3-3-2009 333 joe 4-4-2009 |
Ter verduidelijking: een member kan verschillende nickname's gebruiken, maar deze zijn allemaal gekoppeld aan hetzelfde account (members tabel) via het myid veld.
*date is een DATETIME veld, maar ik heb het hier wat eenvoudiger weergegeven.
Wat ik wil: het meest recente record voor elke member selecteren.
Het probleem: door MAX(table2.date) te gebruiken, krijg ik inderdaad de meest recente datum voor deze member, maar de rest van het resultaat is niet afkomstig uit dezelfde row. Ter illustratie, dit krijg ik terug:
222 john 3-3-2009 <- dit is de meest recente datum, maar de nickname (en myid) behoren tot het oudere record!
Dit is wat ik verwacht te krijgen:
222 johnnyboy 3-3-2009 <- de nickname is nu afkomstig uit dezelfde row als de meest recente datum
Dit is mijn query:
SQL:
1
2
3
4
| SELECT members.myid, table2.nickname, MAX(table2.date) AS date FROM members, table2 WHERE members.myid = table2.myid GROUP BY members.myid |