Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果条件不与组一起工作,则_Mysql_Sql - Fatal编程技术网

Mysql 如果条件不与组一起工作,则

Mysql 如果条件不与组一起工作,则,mysql,sql,Mysql,Sql,我有三个表,分别是tbl\u lead、tbl\u documents spickup和tbl\u bankdata tbl\u lead表格与tbl\u文档备份连接带有lead\u id与tbl\u bankdata相同。我在tbl_lead表上有个人信息,在tbl_documents备份上有文档信息,在tbl_bankdata上有银行信息。银行信息可以有多个记录 现在我必须显示所有表中的记录,因此我使用连接和分组方式 为什么groupby,因为在tbl_bankdata中,我有同一用户的多个

我有三个表,分别是
tbl\u lead、tbl\u documents spickup
tbl\u bankdata

tbl\u lead
表格与
tbl\u文档备份连接
带有
lead\u id
tbl\u bankdata
相同。我在
tbl_lead
表上有个人信息,在
tbl_documents备份上有文档信息,在
tbl_bankdata上有银行信息。银行信息可以有多个记录

现在我必须显示所有表中的记录,因此我使用
连接
分组方式

为什么
groupby
,因为在
tbl_bankdata
中,我有同一用户的多个记录。因此,我必须对lead_id进行分组

我在
tbl_lead
中有3条记录,在
tbl_documentsPickup
中有3条记录,在
tbl_bankdata
中有5条记录。我得到的3个记录使用组是正确的

所以我的问题是

SELECT * 
  FROM tbl_lead 
  LEFT JOIN tbl_documentsPickup ON tbl_lead.c_id=tbl_documentsPickup.lead_id  
  LEFT JOIN (
             SELECT lead_id, b_bankDoneStatus, max(date_of_added) as latest 
               FROM tbl_bankdata 
              GROUP BY lead_id) r 
         ON tbl_lead.c_id=r.lead_id  
      ORDER BY tbl_lead.date_of_created DESC;
使用上面的代码,我得到了正确的输出。我得到了每一张唱片。现在我必须设置where条件

我的问题是,我在表
tbl\u bankdata
中有一个名为
statusDone
的列。如果statusDone为0,则显示记录,否则不显示记录

我试过了

如果我在组中使用statusDone=0,那么我将获得所有记录,或者如果我使用r.statusDone=0,那么我将获得“where子句”中的未知列“r.statusDone”


我正在使用Codeigniter。我刚刚分享了我的SQL查询。

我认为您需要在子查询中包括
statusDone
列(也在
分组方式列表中)


子查询本身看起来很可疑:
按lead\u id从tbl\u bankdata组中选择lead\u id、b\u bankDoneStatus、max(添加日期)作为最新的lead\u id
b\u bankDoneStatus
未被聚合函数包装,我怀疑它在功能上是否依赖于lead\u id列。相关:@LukaszSzozda,你能帮我做正确的子查询吗?你要做的第一件事是为演示提供示例数据和期望的结果。编写实际策划的代码比详细描述要容易得多。@LukaszSzozda,是的,我同意你最后的评论。给我一些时间检查你的回答。我正在获取所有记录。为什么使用max(b_bankDoneStatus)=0?@questionbank Is statusDone=b_bankDoneStatus。。?tbl_bankdata是否真的有一个名为statusDone的列,或者它只是一个别名?不,两者都不同。我必须在同样在tbl_bankdata中的statusDone上设置条件table@questionbank那么,你似乎需要考虑<代码>拥有max(StasuSdoN)=0 < /代码>。
SELECT * 
   FROM tbl_lead l
   LEFT JOIN tbl_documentsPickup dp ON l.c_id = dp.lead_id  
   LEFT JOIN (
              SELECT lead_id, statusDone, max(date_of_added) as latest 
                FROM tbl_bankdata 
               GROUP BY lead_id, statusDone     
              HAVING max(`date_of_added`) = latest              
              ) bd 
          ON l.c_id = bd.lead_id 
       WHERE bd.statusDone = 0
       ORDER BY l.date_of_created DESC;