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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выбрать обновление

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: По дате из 15 таблиц..
DeepVarvar Супермодератор
Отправлено: 25 Июля, 2011 - 13:13:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Есть 15 таблиц - каждая из них, это содержимое разных модулей.
Таблицы никак не связаны.
Но у всех есть поле "дата добавления" типа DATETIME

Вопрос: как вытащить последнее обновление по дате из всех 15 таблиц?

(Отредактировано автором: 25 Июля, 2011 - 13:15:23)

 
 Top
PATCH
Отправлено: 25 Июля, 2011 - 13:18:33
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




я б предложил бы сравнивать со всех 15 таблицы дату и чья дата самая раняя (раняя всмысле ближе к реальному времени) ту таблицу и вытаскиваем... но помойму задействует много ресурсов сервера такой вариант.
 
 Top
EuGen Администратор
Отправлено: 25 Июля, 2011 - 13:37:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




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 генерировать. Но по сути это мало чем отличается от обычного сравнения.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 25 Июля, 2011 - 16:11:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




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 ваш вариант выводил ошибку.

(Отредактировано автором: 25 Июля, 2011 - 16:50:55)

 
 Top
EuGen Администратор
Отправлено: 25 Июля, 2011 - 17:14:45
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Верно, я забыл определить альяс.
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

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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB