3つのテーブルからのデータを制限付きのデータの選択
質問
私は3つのテーブルPPC_OFFERS、SURVERY_OFFERS、find_offers(管理セクションから、これらのテーブルにデータを入力します)
今すぐ終了し、これらのテーブルから最新の3オファーを表示したいです。
すき。最新の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つすべてを1つのテーブルに含め、3つの異なるテーブルを使用するのではなく、互いに区別するために「offer_type」IDを使用してください。コードを簡素化する可能性があります。
これはあなたの現在の設定で機能するかもしれないと思います:
$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();
. 他のヒント
make 3列の列の同じ名前を持つUnion Union
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
.
(
所属していません StackOverflow