如何查询空表以检查空虚?

时间:2015-01-15 15:17:02

标签: mysql sql laravel laravel-4 eloquent

我有以下数据库结构。

applets
--id (incr)

applet_stats
--id (incr)
--applet_id (relates to applet.id)
--date ("Y-m-d" format)

示例数据:

applets
1
2
3

applet_stats
1   1    2015.01.15
2   1    2015.01.15
3   1    2015.01.15
4   1    2015.01.15
5   2    2015.01.14

在上面的例子中,我们有3个小程序。 Applet 1在2015.01.15上有4x统计数据,在2015.01.14(昨天)上有Applet 2 1x统计数据

如何查询数据库,以便获得以下输出:

// Show me the applets which doesn't have any statistics on "2015.01.15".
[2,3]

我自己尝试使用leftJoin,但我忽略了一些非常简单的事情,所以每次都会得到错误的结果。

聚苯乙烯。在Eloquent声明中会更好。

2 个答案:

答案 0 :(得分:2)

雄辩的方式,假设statshasMany关系:

$date = '2015-01-15';

Applet::whereDoesntHave('stats', function ($q) use ($date) {
   $q->where('date', $date);
})->get();

答案 1 :(得分:1)

SELECT id 
from applets
where id not in(select distinct applet_id from applet_stats where date ='2015.01.15') 

这可能有助于你