Versio

Laatste contract ophalen

Overzicht Reageren

Jan geen

Jan geen

03/06/2010 09:56:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>

Simpel een MAX op c.ends werkt niet in de where clause
 
PHP hulp

PHP hulp

25/05/2012 03:14:58
Gesponsorde koppelingen:
 
Jan geen

Jan geen

03/06/2010 10:19:42
Quote Anchor link
Opgelost,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
AND
  c.ends = (SELECT MAX(c2.ends) FROM contracts c2 WHERE c2.userID = c.userID)
?>

 
Joren de Wit
Beheerder

Joren de Wit

03/06/2010 11:08:57
Quote Anchor link
Een andere oplossing is het gebruik van LIMIT:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
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.
Gewijzigd op 03/06/2010 12:18:37 door Joren de Wit
 
Aron K

Aron K

03/06/2010 11:26:01
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT user, MAX(start) FROM Users GROUP BY user;
 



Overzicht Reageren