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;