Ik zit mat een probleem met een INNER JOIN
Ik heb twee tabellen. Hier even een versimpelde versie er van:

- table 1 -
id | naam
1 | kees
2 | tom
3 | rick
4 | paul

- table 2 -
id | user_id
1 | 2
2 | 2
3 | 1
4 | 3
5 | 3
6 | 4

Als ik een INNER JOIN doe op table1.id = table2.user_id krijg ik:

table1.id | table1.naam | table2.id
1 | kees | 3
2 | tom | 1
2 | tom | 2
3 | rick | 4
3 | rick | 5
4 | paul | 6

Ik wil dit lijstje krijgen:
1 | kees | 3
2 | tom | 2
3 | rick | 5
4 | paul | 6

Uit table 2 wil ik de hoogste id waarde krijgen.
Met mijn huidige krijg ik ze dus beide :(

Ik weet alleen niet hoe ik dit kan doen :\
Heb ik een JOIN over het gezien of moet ik het op een andere manier aanpakken?

Al vast bedankt :)
Ik doe al een ORDER op table1 en niet op de id helaas anders had het gekunt.
Dubbel ORDER ging toch niet?
Ja sorry, ik had het 2e rijtje nog niet gezien.
Een id heeft normaal een unieke waarde waaraan je hem kan herkennen, Kun je niet gewoon alle dubbele namen/id eruit halen en hem dan op uniek zetten?
Nee dat gaat niet :\
Ik wil die andere namelijk behouden.

Beiden tabellen zijn namelijk apart ook uit te lezen en dan worden alle rows uitgelezen.
Die JOIN die ik wil hebben is een lijstje met (bijvoorbeeld) de laatste aankoop van een persoon.
Alle personen zijn appart te bekijken.
En alle aankomen zijn ook appart te bekijken.
Als je het over een 'laatste aankoop' hebt, kun je dat nooit aan het id in een tabel afleiden. Het id gebruik je alleen voor het uniek aanduiden van records en heeft verder helemaal geen waarde. Ook het verhaal dat je toch auto_increment gebruikt gaat niet op, zodra jij bijvoorbeeld namelijk een backup terug plaatst, hebben oudere records een hoger id.

Nee, als je iets in de tijd wilt vastleggen, zul je een datum/tijd stempel aan de records toe moeten kennen. Dus in tabel2 heb je nog een DATETIME kolom nodig waarin je dat gegeven opslaat.

De volgende query zou je dan kunnen gebruiken om de laatste aankopen te selecteren:

SELECT
  t1.naam,
  MAX(t2.datumtijdveld) AS tijdstip
FROM
  tabel1 AS t1
INNER JOIN
  tabel2 AS t2
    ON t1.id = t2.user_id
GROUP BY
  t1.naam
Velden bevatten idd een DATETIME veld.
Nu ander probleem als ik een WHERE toe voeg geeft hij helemaal niks meer.
Datum moet groter zijn dan vandaag...
Resultaat niks en hij moet minimaal vier resultaten geven :\

Reageren