Laatste contract ophalen
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:
Simpel een MAX op c.ends werkt niet in de where clause
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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
?>
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
Gesponsorde koppelingen:
Opgelost,
Code (php)
1
2
3
4
5
2
3
4
5
<?php
AND
c.ends = (SELECT MAX(c2.ends) FROM contracts c2 WHERE c2.userID = c.userID)
?>
AND
c.ends = (SELECT MAX(c2.ends) FROM contracts c2 WHERE c2.userID = c.userID)
?>
Een andere oplossing is het gebruik van LIMIT:
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.
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.
Gewijzigd op 03/06/2010 12:18:37 door Joren de Wit



