Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Вот так мы делаем выборку из основной таблицы table1:
SELECT t1.ID, t1.f2, t1.f3
FROM table1 t1
WHERE (какой-то простой фильтр)
ID - естественно, autoinc, unique
В таблице table2 - записи типа log, то есть история каких-то действий с таблицей table1: поля ID, f5, datef6.
В этой таблице ID - это ID таблицы table1, записей для одного ID может быть сколько угодно - поскольку журнал.
Таблицы связаны по ID
Вот запрос к лог-таблице, чтобы добыть последнюю по дате запись, соответствующую ID из главной таблицы table1:
SELECT t2.ID, t2.f5, t2.datef6 FROM table2 t2 WHERE t2.ID=t1.ID ORDER BY t2.datef6 DESC LIMIT 1
Можно ли сделать один !быстрый! запрос, который выводил бы
строки из table1 и table2, примерно вот так:
SELECT t1.ID, t1.f2, t1.f3, t2.f5, t2.datef6,...
FROM table1 t1, table2 t2
...
То есть, каждая строка результата содержала бы поля из table1 и НЕСКОЛЬКО ПОЛЕЙ из table2, ИЗ ПОСЛЕДНЕЙ ПО ДАТЕ записи, связанной по ID с записью основной таблиы table1
Спасибо
Неактивен
Вот главная таблица table1:
id name
----------
1 name1
2 name2
3 name3
Вот таблица table2 - история каких-то действий с таблицей table1 (неважно каких, важно что они датированы),
при этом tid - это id из таблицы table1
tid eventdate action
-------------------------
1 2011-01-10 rename
1 2011-02-02 activate
1 2011-03-05 deactivate
2 2011-04-21 rename
3 2011-02-20 activate
3 2011-03-30 deactivate
2 2011-04-06 rename
1 2011-03-02 deactivate
2 2011-05-01 mark
3 2011-02-12 rename
Задача:
Вывести ТОЛЬКО самые последние по дате действия над записями table1, то есть результат в этом примере такой:
id name eventdate action
1 name1 2011-03-05 deactivate
2 name2 2011-05-01 mark
3 name3 2011-03-30 deactivate
Теперь, я надеюсь, задача более ясно описана.
Неактивен
Страниц: 1