Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 左接哪里_Php_Mysql_Left Join - Fatal编程技术网

Php 左接哪里

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 $

$i表格:id,项目名称

$t表格:id、成员名称、项目名称

$u表格:id、成员名称、成员状态

我想

在$i中列出所有项目名称,即使$t表中没有任何项目名称 加上以$t为单位计算项目名称的数量 然后将计数结果限制为会员资格状态='active',单位为$u。 到目前为止,我已经回答了我问题的第一部分:

$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