Php MySQL左连接空问题
我有以下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,
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子句中。