|
|
|
| В принципе должно решаться но никак не могу понять как.
2 таблицы:
1)
journal_id (primary)
category_id
journal_name
2)
status_id (primary)
journal_id
status
add_date
Во второй таблице статус для записи "журнала". Связь один-ко-многим.
У каждого статуса есть время добавления.
Надо вывести список записей журнала, такой, где у каждой записи выводился бы еще и текущий статус, определяемый по наибольшей дате для статусов этой записи...
Например, у первой записи журнала есть 2 статуса - введена, закрыта(дата больше введения).
В результат с остальными данными строки "журнала" пойдет второй статус и его дата.
p.s. Надеюсь не слишком путанно | |
|
|
|
|
|
|
|
для: holst
(01.12.2008 в 15:54)
| |
SELECT j.*, status
FROM j LEFT JOIN (
SELECT s.journal_id AS jid, MAX(add_date) AS ad
FROM status
GROUP BY jid
) AS ls
ON j.journal_id = ls.jid
LEFT JOIN s ON ad = s.add_date
|
так или примерно так.
Если первичный ключ лишь возрастает, лучше бы ориентироваться по нему. | |
|
|
|
|
|
|
|
для: Trianon
(01.12.2008 в 18:18)
| | первичный в смысле таблицы status?
он auto_increment, конечно, но чтоб базу не засорять историей изменения статусов, то на каждую запись журнала в status хранится максимум только 5 полей с возможными статусами и датами их проставления. Так что придется только по дате и смотреть текущий статус записи.
А так Большое Спасибо :)
Все никак осилить сам не могу JOIN и иже с ним. | |
|
|
|