Php 左接哪里
$i表格:id,项目名称 $t表格:id、成员名称、项目名称 $u表格:id、成员名称、成员状态 我想 在$i中列出所有项目名称,即使$t表中没有任何项目名称 加上以$t为单位计算项目名称的数量 然后将计数结果限制为会员资格状态='active',单位为$u。 到目前为止,我已经回答了我问题的第一部分:Php 左接哪里,php,mysql,left-join,Php,Mysql,Left Join,$i表格:id,项目名称 $t表格:id、成员名称、项目名称 $u表格:id、成员名称、成员状态 我想 在$i中列出所有项目名称,即使$t表中没有任何项目名称 加上以$t为单位计算项目名称的数量 然后将计数结果限制为会员资格状态='active',单位为$u。 到目前为止,我已经回答了我问题的第一部分: $find_actives = mysql_query ("select $i.item_name, count($t.item_name) from $
$find_actives = mysql_query ("select $i.item_name,
count($t.item_name) from $i left
join $t on $i.item_name = $t.item_name group by $t.item_name")
但当我将其更改为下面的查询时,它不再列出$I中的所有项目
$find_actives = mysql_query ("select $i.item_name,
count($t.item_name) from $i left
join $t on $i.item_name = $t.item_name
where $t.member_name IN (select distinct member_name from $u
where membership_status = 'active' group by member_name)
group by $t.item_name")
我希望结果如下所示:
项目名称1-计数=5
item_name2-count=0//这是丢失的行
项目名称3-计数=2
我怎样才能做到这一点呢?如果我没有看错你的问题,我想这就是你想要的:
SELECT
$i.item_name,
COUNT(temp.item_name) AS item_count
FROM $i
LEFT JOIN (
SELECT $t.item_name AS item_name
FROM $t
INNER JOIN $u
ON $t.member_name = $u.member_name
WHERE $u.membership_status = 'active'
) AS temp
ON $i.item_name = temp.item_name
GROUP BY $i.item_name