gpt4 book ai didi

mysql - 条件左连接或Where SQL 查询

转载 作者:行者123 更新时间:2023-11-29 09:39:46 24 4
gpt4 key购买 nike

我有一些查询显示一些数据,然后我离开加入一个表,但有一段时间,该表没有数据。

是否有任何可能的查询来添加条件左连接或where子句?

$sql = "SELECT 
mm.idno as idno,
TRIM(UPPER(CONCAT(mm.fname, ' ', mm.mname, ' ', mm.lname))) as fullname,
TRIM(UPPER(mm.branchname)) as branchname,
TRIM(UPPER(mm.address)) as outlet_address,
(SUM(dr.totalamt)/GREATEST(1,COUNT(DISTINCT drr.id)) - SUM(drr.totalamt)/GREATEST(1,COUNT(DISTINCT dr.id))) as total_amount
FROM 8_membermain mm
LEFT JOIN 8_directsalessummary dr
ON mm.idno = dr.idno
LEFT JOIN 8_drreturnsummary drr
ON mm.idno = drr.idno
WHERE mm.status > 0 AND dr.status = 1
AND dr.ispaid = 'Full Payment'
AND dr.trandate BETWEEN '".$date1."' AND '".$date2."'
AND drr.trandate BETWEEN '".$date1."' AND '".$date2."'";

有时8_drreturnsummary中没有数据可获取,但我添加了AND drr.trandate BETWEEN '".$date1."' AND '".$date2."'" 所以我的查询中有一个错误。我只希望 8_drreturnsummary 是可选/条件以及 WHERE ... AND drr.trandate。我尝试了任何可能的方法,但是我失败了。

最佳答案

我将使用一个更简单的查询作为示例。在此查询中:

select *
from TableA left outer join TableB on TableA.Field1 = TableB.Field1
where TableB.Field2 = 'somevalue'

WHERE 子句排除任何不匹配的 TableA 记录,因为在这种情况下,所有 TableB 值都将为 NULL。您可以将其视为“加入后过滤器”。

我认为你想要一个“预加入过滤器”。您可以这样做:

select *
from TableA left outer join
(select * from TableB where TableB.Field2 = 'somevalue') as TableB
on TableA.Field1 = TableB.Field1

关于mysql - 条件左连接或Where SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56862678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com