如果Inner Join为空,则显示结果

时间:2015-08-26 23:30:20

标签: mysql join

我有两个表,我正在加入Inner join。

第一个表是位置列表,第二个表是每个位置的产品列表。

我的问题是当我运行内部联接时,如果有一个没有任何产品的位置,该位置将不会显示。

基本上如果内连接中没有任何东西,它基本上不存在。

SELECT idL, n, lat,lng, latest, type, 
( 3959 * acos( cos( radians('33.111963') ) * cos( radians( lat ) ) * cos( radians(lng ) - radians('-117.281985') ) + sin( radians('33.111963') ) * sin( radians( lat ) ) ) ) AS distance 
FROM Table1 
inner join(SELECT ids, max(dateTime) as latest FROM Table2 GROUP BY ids ) as tableJ 
on idL = ids 
WHERE type = "Grocery" 
GROUP BY idL 
HAVING distance < '15' 
ORDER BY distance asc

SQL可能看起来有点疯狂,因为它的计算距离也很远。

2 个答案:

答案 0 :(得分:3)

您需要将INNER JOIN更改为LEFT JOIN,以便在右表中没有匹配的行时从左表中获取行。请记住,在这种情况下,右表中的所有列都将为NULL。

enter image description here

答案 1 :(得分:0)

在这种情况下,LEFT OUTER JOIN将是正确的“JOIN”类型。

  

左外连接从表A中生成一组完整的记录,其中包含表B中的匹配记录(如果可用)。如果没有匹配,则右侧将包含null。

Futher explanation of Joins