Выбор данных из 3 таблиц с лимитом
Вопрос
У меня есть 3 таблицы ppc_offers, survery_offers, find_offers (из раздела Admin, я вхожу в данные в эти таблицы)
Теперь на переднем конце, я хочу отобразить последние 3 предложения из этих таблиц.
I.e.Последние 3 придут, они могут быть из одного стола или нескольких таблиц ... У него просто состояние «Последние 3»
Как я могу сделать это?
laravel предоставляет любой способ сделать это?
Или мне нужно иметь какой-либо главный стол?
Или вы можете предложить мне обычный запрос SQL для этого?
Пожалуйста, помогите. Спасибо.
Таблица PPC:
-------------------------
id | integer
title | varchar
url | varchar
description | varchar
created_at | timestamp
updated_at | timestamp
--------------------------
.
Таблица опроса:
-------------------------
id | integer
title | varchar
created_at | timestamp
updated_at | timestamp
--------------------------
.
Найти таблицу кода:
-------------------------
id | integer
title | varchar
url | varchar
description | varchar
code | varchar
created_at | timestamp
updated_at | timestamp
--------------------------
. Решение
Как рекомендация, возможно, принесет больше смысла включать все 3 из этих предложений в одну таблицу и использовать удостоверение личности «eduepe», чтобы отличить их друг от друга, а не использовать 3 разных таблицы.Это может упростить ваш код.
Я считаю, что это может работать с вашей текущей настройкой:
$ppc = DB::table('ppc_offers')
->select('title', 'url', 'description', 'NULL as code', 'updated_at');
$survey = DB::table('survey_offers')
->select('title', 'NULL as url', 'NULL as description', 'NULL as code', 'updated_at');
$find = DB::table('find_offers')
->select('title', 'url', 'description', 'code', 'updated_at');
return $ppc->unionAll($survey)->unionAll($find)
->orderBy('updated_at', 'desc')
->take(3)
->get();
. Другие советы
Сделать 3 запроса объединения их с теми же именами для столбцов
select * from
(
(query1 order by id desc limit 3) x
union
(query2 order by id desc limit 3) y
union
(query3 order by id desc limit 3) z
.
(