Ik heb een tabel 'contracts' met de volgende velden:
id(INT), userID(INT), start(DATE), end(DATE)

Nu is het mogelijk dat er twee contracten met hetzelfde userID in staan. Hoe kan ik nu van alle contracten per user het laatste contract ophalen?

Heb nu dit:

<?php
	SELECT
		u.*,
	FROM
		contracts c,
		users u
	WHERE
		c.userID = u.id
	AND
		(CURDATE() + INTERVAL 1 DAY) >= c.ends
	AND
		c.notifiedDate = '0000-00-00'
	GROUP BY
		c.userID
	ORDER BY
		c.ends DESC
?>

Simpel een MAX op c.ends werkt niet in de where clause
Opgelost,

[code]
<?php
AND
c.ends = (SELECT MAX(c2.ends) FROM contracts c2 WHERE c2.userID = c.userID)
?>
[code]
Een andere oplossing is het gebruik van LIMIT:

SELECT 
  ...
ORDER BY c.ends DESC
LIMIT 1


Edit: Nu ik je vraag nog een keer lees is dit uiteraard niet de oplossing. Dit zou je kunnen gebruiken als je voor 1 gebruiker het laatste record op wilt halen.

SELECT user, MAX(start) FROM Users GROUP BY user;

Reageren