提取没有贡献的会员

时间:2013-06-24 19:20:17

标签: mysql

你如何找出谁没有为我们刚刚做过的特定筹款活动做出贡献。不同的慈善机构有很多头衔,但我只想提取特定慈善机构头衔的非贡献者。反正有没有这样做?当我执行下面的语法时,它会显示为空集。搜索是通过表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

1 个答案:

答案 0 :(得分:1)

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

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