从限制的3个表中选择数据

时间:2014-02-24 23:06:04

标签: php mysql laravel

我有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
--------------------------

2 个答案:

答案 0 :(得分:2)

使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

答案 1 :(得分:1)

作为建议,在一个表中包含所有这三个商品可能更有意义,并使用“offer_type”id来区分它们,而不是使用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();