Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 Mysql左连接问题,3个表没有返回第一个表中的所有行_Php_Mysql_Sql - Fatal编程技术网

Php Mysql左连接问题,3个表没有返回第一个表中的所有行

Php Mysql左连接问题,3个表没有返回第一个表中的所有行,php,mysql,sql,Php,Mysql,Sql,我有以下疑问 select catid, cat_name, currency, count(is_reporting_category_sales.id) as total_sales, sum(total_sales) as total_earning from is_category left join is_reporting_category_sales on is_category.catid = is_reporting_category_sales.category_

我有以下疑问

select  catid, cat_name, currency, count(is_reporting_category_sales.id) as total_sales, 
sum(total_sales) as total_earning 
from is_category 
  left join is_reporting_category_sales on is_category.catid = is_reporting_category_sales.category_id 
  join is_reporting_order on is_reporting_order.id = is_reporting_category_sales.order_id 
group by catid, cat_name, currency 
ORDER BY `is_category`.`cat_name` ASC

但这只返回is_category和
is_reporting_category_sales
is_reporting_order
中常见的行,但我想从
is_category表中获取所有行。如果该类别没有订单,则
0
作为
total\u-earning
total\u-sales

您必须使用Left-Join

left join is_reporting_order on is_reporting_order.id = is_reporting_category_sales.order_id 
而不是

join is_reporting_order on is_reporting_order.id = is_reporting_category_sales.order_id 

也许使用左外部联接可以得到预期的结果(顺便说一句,必须猜测列的一些别名,因此其中一些可能是错误的)

select  c.`catid`, c.`cat_name`, `currency`, count(i.`id`) as 'total_sales', sum(`total_sales`) as 'total_earning' 
from `is_category` c
  left outer join `is_reporting_category_sales` i on c.`catid` = i.`category_id`
  left outer join `is_reporting_order` on o.`id` = i.`order_id`
group by c.`catid`, c.`cat_name`, `currency`
order by c.`cat_name` asc;