【问题标题】:Mysql & Laravel Multiple where clause on 2 columnsMysql 和 Laravel 2 列上的多个 where 子句
【发布时间】:2017-09-26 18:21:14
【问题描述】:

我有一个包含以下 4 列的表格:

Id Name Activity Date

一个名字可以有多个条目,因为每次有人参加任何活动时,都会插入姓名、活动和特定活动日期。

我想查询哪里:

获取所有在提到的日期完成以下所有活动的人

活动 = 运行,日期 = 12/03/2015

活动 = 舞蹈和日期 = 10/01/2015

活动 = 阅读,日期 = 26/05/2015

请注意,其中的活动组合可以从最小 1 更改为最大 10-12

我怎样才能有效地做到这一点?在 mysql raw 上还有什么更好的方法吗?

【问题讨论】:

    标签: php mysql laravel where multiple-columns


    【解决方案1】:

    你有三个条件,所以如果匹配你的条件的行数相同,则获取名称。

    SELECT name, count(*) as match_count FROM names WHERE (name = 'run' AND 'date' = '12/03/2015') OR (name = 'dance' AND 'date' = '10/01/2015') OR (name = 'dance' AND 'read' = '26/05/2015') GROUP BY name
    
    if($result->match_count == $numberOfConditions)
        $result->name
    

    或在您的查询中检查它(if 语句)

    SELECT name, count(*) as match_count FROM names WHERE (name = 'run' AND 'date' = '12/03/2015') OR (name = 'dance' AND 'date' = '10/01/2015') OR (name = 'dance' AND 'read' = '26/05/2015') GROUP BY name HAVING match_count = 3
    

    【讨论】:

    • 谢谢,但我想要 And Where 之类的东西。所以所有那些 where 子句都必须匹配。
    • 在您的查询中,如果任何 where 子句成功,它将给出结果,我想获取完成所有这些活动的名称,并且每个活动必须仅在当天:|跨度>
    • 是的,它在多行中。因此,一个人每次进行任何活动时,一个名称都可以有多个条目。一种 EAV 类型的表 mappng。
    • 是的,@MeeraTank,记录应该包含所有条件的条目
    • 您也可以在查询中使用HAVING COUNT(*) = 3
    猜你喜欢
    • 2020-09-28
    • 2018-09-05
    • 1970-01-01
    • 2019-11-27
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2021-02-13
    相关资源
    最近更新 更多