Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Выбрать обновление
Форумы портала PHP.SU » » Работа с СУБД » Выбрать обновление

Страниц (1): [1]
 

1. DeepVarvar - 25 Июля, 2011 - 13:13:33 - перейти к сообщению
Есть 15 таблиц - каждая из них, это содержимое разных модулей.
Таблицы никак не связаны.
Но у всех есть поле "дата добавления" типа DATETIME

Вопрос: как вытащить последнее обновление по дате из всех 15 таблиц?
2. PATCH - 25 Июля, 2011 - 13:18:33 - перейти к сообщению
я б предложил бы сравнивать со всех 15 таблицы дату и чья дата самая раняя (раняя всмысле ближе к реальному времени) ту таблицу и вытаскиваем... но помойму задействует много ресурсов сервера такой вариант.
3. EuGen - 25 Июля, 2011 - 13:37:31 - перейти к сообщению
SELECT MAX(max_date)
FROM
(
SELECT MAX(date_field_0) AS max_date FROM table_0
UNION ALL
SELECT MAX(date_field_1) AS max_date FROM table_1
...
UNION ALL
SELECT MAX(date_field_14) AS max_date FROM table_14
)

Запрос можно в php генерировать. Но по сути это мало чем отличается от обычного сравнения.
4. DeepVarvar - 25 Июля, 2011 - 16:11:34 - перейти к сообщению
EuGen огромное спасибо Закатив глазки и +
(Добавление)
Но сработало только вот так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT Dt FROM t1
  2. UNION ALL
  3. SELECT Dt FROM t2
  4. UNION ALL
  5. ............
  6. SELECT Dt FROM t15
  7. ORDER BY Dt DESC LIMIT 1

EuGen ваш вариант выводил ошибку.
5. EuGen - 25 Июля, 2011 - 17:14:45 - перейти к сообщению
Верно, я забыл определить альяс.
SELECT MAX(max_date)
FROM
(
SELECT MAX(date_field_0) AS max_date FROM table_0
UNION ALL
SELECT MAX(date_field_1) AS max_date FROM table_1
...
UNION ALL
SELECT MAX(date_field_14) AS max_date FROM table_14
) AS max_dates

С точки зрения быстродействия оба варианта плохие - ни в моем ни в Вашем случае индекс при сортировке использовать не удастся.

 

Powered by ExBB FM 1.0 RC1