0

您如何找出谁没有为我们刚刚做过的特定筹款活动做出贡献。不同的慈善机构有很多头衔,但我只想提取特定慈善机构头衔的非捐助者。有没有办法做到这一点?当我执行下面的语法时,它会显示为一个空集。搜索是通过表 ID 匹配和左连接来完成的。请看下文。

SELECT  
    moiid, 
    trim(concat(name.fname,' ' ,name.mname,' ',name.lname)) as Brother, 
    name.moiid as Members_ID, 
    sum(otherpay.othpayamt) as NO_Contribution, 
    quadlt.ltfname as quad
FROM name  
LEFT JOIN OTHERPAY  ON name.moiid = otherpay.othpaymoiid
LEFT JOIN quadlt  ON name.quadlt = quadlt.ltid
WHERE Otherpay.othpaytitle like '%food drive%'
AND otherpay.othpaymoiid IS NULL 
AND name.type = 'BOI'
AND name.type <> 'jrboi'
AND name.city = 'SUFFOLK'
GROUP BY brother
ORDER BY name.quadlt, brother
4

1 回答 1

1

当您在 where 表的 where 子句中添加条件时left joined,您实际上将它们转换为内部联接,要求它们返回记录。您可以将条件移动到联接本身:

SELECT  moiid, trim(concat(name.fname,' ' ,name.mname,' ',name.lname)) as Brother, name.moiid as Members_ID, sum(otherpay.othpayamt) as NO_Contribution, quadlt.ltfname as quad
FROM name  
LEFT JOIN OTHERPAY  
  ON name.moiid = otherpay.othpaymoiid 
  AND Otherpay.othpaytitle like '%food drive%'
LEFT JOIN quadlt  ON name.quadlt = quadlt.ltid
WHERE  
otherpay.othpaymoiid IS NULL 
AND name.type = 'BOI'
AND name.type <> 'jrboi'
AND name.city = 'SUFFOLK'
GROUP BY brother
ORDER BY name.quadlt, brother
于 2013-06-24T19:23:27.317 回答