2012-04-10 1 views
0

У меня есть три таблицы ..как получить данные о максимальной даты в PHP

SEEKER 
seeker_nic--- username---request_fulfilled 
111-----------ali--------YES 
222-----------bilal------YES 

второй стол

DONOR 
donor_nic---username----area 
999----------Fahad-------UK 
555----------SAJAD------USA 
777---------HAMZA-------PK 

третья таблица

STATUS 
status-id---seeker_nic---donor_nic--requestfulfilled_by----request_fulfilled_date 
1 -------------111-------999---------- Fahad-------------2012/04/09 
2 -------------111-------555---------- SAJAD-------------2012/05/15 
3--------------222------777-----------HAMZA--------------2012/07/20 

теперь я хочу этот результат для SEEKER (111) с последними данными.

seeker_nic---username--- request_fulfilled---requestfulfilled_by----area---request_fulfilled_date 
111-----------ali--------YES-----------------SAJAD-----------------USA--------2012/05/15 

я пытаюсь этот запрос, этот запрос показывает обрядовую seeker_nic и requestfulfilled_date, но он показывает неправильно донорно-НИК, площадь и requestfulfilled_by ...

SELECT seeker.seeker_nic, donor.donor_nic, donor.area, 
status.requestfulfilled_b , max(status.`request_fulfilled_date`) AS request_fulfilled_date 
FROM seeker 
JOIN STATUS ON seeker.seeker_nic = status.seeker_nic 
JOIN DONOR ON status.donor_nic = donor.donor_nic 
WHERE seeker.username = '$uname' 
GROUP BY status.`seeker_nic` 

я получаю анс, как это ....

seeker_nic---username--- request_fulfilled---requestfulfilled_by--------area--------request_fulfilled_date 
111-----------ali---------------YES-----------------HAMZA--------------PK------------2012/05/15 

плз помогите мне .. :(

+0

* «Я пытаюсь этот запрос,» * - Вы не поставили свой запрос к вашему вопрос, который будет хорошо знать. – hakre

+0

Я просто забыл .. я добавил запрос сейчас ... – maham

+0

да я использую MYSQL – maham

ответ

2

Попробуйте это:

SELECT seeker.seeker_nic, donor.donor_nic, donor.area, status.requestfulfilled_by, status.request_fulfilled_date 
FROM seeker 
JOIN (
    SELECT seeker_nic, max(request_fulfilled_date) as last_date 
    FROM status 
    GROUP BY seeker_nic 
) x ON x.seeker_nic = seeker.seeker_nic 
JOIN STATUS 
    ON x.seeker_nic = status.seeker_nic 
    AND x.last_date = status.request_fulfilled_date 
JOIN DONOR 
    ON status.donor_nic = donor.donor_nic 
WHERE seeker.username = '$uname' 
+0

yeahhh .... его рабочий ... thnxx alottt @bobwienholt. .. :) – maham

+0

u решил мою проблему .. поблагодарить u sooooooo much @bobwienholt :) – maham

+0

да, конечно ... – maham

0
SELECT x.seeker_nic, y.username, y.request_fulfilled, 
     x.requestfulfilled_by, z.area, x.request_fulfilled_date 
FROM status x, seeker y, donor z 
WHERE x.seeker_nic=y.seeker_nic AND y.seeker_nic=111 AND z.donor_nic=x.donor_nic; 
2

Если вам необходимо выбрать последнюю дату для одного конкретного пользователя, вам не нужен GROUP BY пункт:

SELECT 
    status.request_fulfilled_date, # status.requestfulfilled_by, 
    seeker.seeker_nic, seeker.username, seeker.request_fulfilled, 
    donor.donor_nic, donor.username, donor.area 
FROM  status 
LEFT JOIN seeker ON status.seeker_nic = seeker.seeker_nic 
LEFT JOIN donor ON status.donoc_nic = donor.donor_nic 
WHERE seeker.username = 'ali' 
ORDER BY status.request_fulfilled_date DESC 
LIMIT 1 
+0

этот запрос также работает в соответствии с моими требованиями ... thnx @Salman A :) – maham

Смежные вопросы