вывести записи с наибольшими id

fanat190

Новичок
Всем привет. у меня следующая задача.
имеются четыре таблицы, клиент, проект, этап, документ. все они связаны по id
задача: нужно вывести по одному клиенту, так чтобы у каждого клиента выводился последний проект, у проекта вывводился последний этап и документ. то есть все последние добавленные записи по клиенту.
пробовал вот такой запрос, но не то
$result="SELECT clientt.id_clientt, proekt.id_proekt, clientt.name_clientt, proekt.name_proekt, etap.name_etap, etap.id_etap, dokument.id_dokument, dokument.name_dokument
FROM
clientt, proekt, etap, dokument
WHERE
clientt.id_clientt=proekt.id_clientt and proekt.id_proekt=etap.id_proekt and proekt.id_proekt=dokument.id_proekt and etap.id_etap=dokument.id_etap
GROUP BY clientt.id_clientt DESC
";
 

fanat190

Новичок
я пробовал использовать JOIN, у меня не получается так как нужно вывести данные.
 

fanat190

Новичок
hell0w0rd,
$sql="SELECT *
FROM clientt
INNER JOIN proekt ON clientt.id_clientt=proekt.id_clientt
INNER JOIN etap ON max(proekt.id_proekt)=max(etap.id_proekt)
INNER JOIN dokument ON etap.id_etap=dokument.id_etap
GROUP BY clientt.id_clientt DESC";

и еще множество вариация с max все-равно выводится не так как нужно.
 

fanat190

Новичок
у меня вообще что-то странное творится, он выводит уже не первый и не последний проект, а где -то по середине. в чем проблема может быть??? может у кого-то встречалась подобная задача???
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
hell0w0rd,
$sql="SELECT *
FROM clientt
INNER JOIN proekt ON clientt.id_clientt=proekt.id_clientt
INNER JOIN etap ON max(proekt.id_proekt)=max(etap.id_proekt)
INNER JOIN dokument ON etap.id_etap=dokument.id_etap
GROUP BY clientt.id_clientt DESC";

и еще множество вариация с max все-равно выводится не так как нужно.
Мыскль ЭТО жрёт? :-O
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
вообще говоря, тут надо все таблицы джойнить по два раза, выбирая первый раз максимальный id, а второй --- имя
Код:
select clientt.id_clientt, proekt.id_proekt, clientt.name_clientt, proekt.name_proekt
from clientt, (select max(id_proekt) as maxproekt, id_clientt from proekt group by id_clientt) as proektagg, proekt
where clientt.id_clientt = proektagg.id_client and
      maxproekt = proekt.id_proekt
Добавление остальных таблиц оставим в качестве упражнения для читателей.
 

fanat190

Новичок
всем спасибо за помощь
вроде бы решил
$result="SELECT * FROM clientt
left join proekt on proekt.id_proekt = (select max(id_proekt) from proekt where proekt.id_clientt = clientt.id_clientt)
left join etap on etap.id_etap = (select max(id_etap) from etap where etap.id_proekt = proekt.id_proekt)
left join dokument on dokument.id_dokument = (select max(id_dokument) from dokument where dokument.id_proekt = proekt.id_proekt)";
 

fanat190

Новичок
даже не знаю, просто я уже все наверное перепробовал) хотя решение наверное ни одно
 
Сверху