SQL Joining by field that *may* be empty

后端 未结 2 1042
滥情空心
滥情空心 2021-01-23 04:59

In my SQL CE database I have three tables: customer, list and customerlist (a junction table between customer and list<

2条回答
  •  被撕碎了的回忆
    2021-01-23 05:29

    You must use LEFT JOIN syntax.

    select list.listid,  case when count(customerlist.customerid) is null then 0 else count(customerlist.customerid) end as numppl, list.ShortDesc
    from list left join customerlist on list.listid=customerlist.listid
    group by list.ShortDesc, list.listid
    order by numppl desc
    

    Or you can use RIGHT JOIN :

    select list.listid, case when count(customerlist.customerid) is null then 0 else count(customerlist.customerid) end as numppl, list.ShortDesc
    from customerlist right join list on customerlist.listid=list.listid
    group by list.ShortDesc, list.listid
    order by numppl desc
    

    Use COALESCE :

    select list.listid,  coalesce(count(customerlist.customerid),0) as numppl, list.ShortDesc
    from list left join customerlist on list.listid=customerlist.listid
    group by list.ShortDesc, list.listid
    order by numppl desc
    

提交回复
热议问题