как получить 2 верхние обновленные записи каждой таблицы в mysql

#php #mysql #sql

#php #mysql #sql

Вопрос:

У меня есть 3 таблицы (articlestbl, businesstbl, photostbl). Теперь я хочу получить 2 самые обновленные записи для каждой таблицы только в ОДНОМ запросе. Эти таблицы не связаны друг с другом (нет внешних ключей).Возможно ли это сделать? если да, то как это сделать. Спасибо.

articlestbl

 art_id art_description art_date 
 1 статья 1 2014-06-02 
 2 статья 2 2014-06-01 
 3 статья 3 2014-06-02

businesstbl

 bus_id bus_description bus_date
 1 бизнес1 2014-05-09 
 2 бизнес2 2014-06-01 
 3 бизнес3 2014-06-02

photostbl

 p_id p_description p_date
 1 фото1 2014-05-09
 2 фото2 2014-04-01
 3 фото3 2014-03-02

Результат строки должен быть

статья 1
статья 3
бизнес2
бизнес3
фото1
фото2

Ответ №1:

Используйте UNION ALL :

 SELECT * FROM articlestbl ORDER BY art_date DESC LIMIT 2
UNION ALL SELECT * FROM businesstbl ORDER BY bus_date DESC LIMIT 2
UNION ALL SELECT * FROM photostbl ORDER BY p_date DESC LIMIT 2
  

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