Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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左连接空问题_Php_Mysql_Sql - Fatal编程技术网

Php MySQL左连接空问题

Php MySQL左连接空问题,php,mysql,sql,Php,Mysql,Sql,我有以下MySQL代码: 工作查询 SELECT name, AVG(q1) AS avg FROM respondents LEFT JOIN results_new ON respondents.login_id = results_new.company WHERE respondents.brand = 'ABC' AND results_new.sdate = 'MAY2014' GROUP BY name ORDER BY avg DESC SELECT name,

我有以下MySQL代码:

工作查询

SELECT name, AVG(q1) AS avg 
FROM respondents 
LEFT JOIN results_new ON respondents.login_id = results_new.company 
WHERE respondents.brand = 'ABC' 
AND results_new.sdate = 'MAY2014' 
GROUP BY name 
ORDER BY avg 
DESC
SELECT name, AVG(q1) AS avg 
FROM respondents 
LEFT JOIN results_new ON respondents.login_id = results_new.company 
WHERE respondents.brand = 'ABC' 
AND results_new.sdate = 'NOV2014' 
GROUP BY name 
ORDER BY avg 
DESC
以上操作正常,它返回35行,并正确显示名称和平均值

非工作查询

SELECT name, AVG(q1) AS avg 
FROM respondents 
LEFT JOIN results_new ON respondents.login_id = results_new.company 
WHERE respondents.brand = 'ABC' 
AND results_new.sdate = 'MAY2014' 
GROUP BY name 
ORDER BY avg 
DESC
SELECT name, AVG(q1) AS avg 
FROM respondents 
LEFT JOIN results_new ON respondents.login_id = results_new.company 
WHERE respondents.brand = 'ABC' 
AND results_new.sdate = 'NOV2014' 
GROUP BY name 
ORDER BY avg 
DESC
上面返回的结果为0,这是正确的,因为表中没有“2014年11月”的数据

然而,我所期望的是查询返回35行,每个名称旁边都有
名称
NULL
。显然,我认为我的
JOIN
是不正确的,但我不知道我错在哪里


欢迎所有建议。

您的
where
子句将您的
左联接
转换为
内部联接
,因为您过滤联接表中的数据。将此条件放入join的
on
子句中

SELECT name, AVG(q1) AS avg 
FROM respondents 
LEFT JOIN results_new ON respondents.login_id = results_new.company  
                      AND results_new.sdate = 'NOV2014'
WHERE respondents.brand = 'ABC'
GROUP BY hotel_name 
ORDER BY avg DESC

您的
where
子句将
左联接
转换为
内部联接
,因为您过滤联接表中的数据。将此条件放入join的
on
子句中

SELECT name, AVG(q1) AS avg 
FROM respondents 
LEFT JOIN results_new ON respondents.login_id = results_new.company  
                      AND results_new.sdate = 'NOV2014'
WHERE respondents.brand = 'ABC'
GROUP BY hotel_name 
ORDER BY avg DESC

WHERE
子句中使用左联接表的一列将左联接更改为内部联接。您必须将此条件添加到join子句中。在
WHERE
子句中使用左联接表的一列将左联接更改为内部联接。您必须将此条件添加到join子句中。