質問

私は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
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top