左连接子查询返回null

时间:2016-06-30 17:39:50

标签: mysql subquery left-join

我遇到了一些我无法弄清楚如何解决它的问题。有3个表位置,模型,User_Likes。我想在一些国家和城市的城市中获得最受欢迎的模特。

表格位置

Loc_ID, Top_ID, Name, Perma

表格型号

Model_ID, Phone, Loc_ID

表User_Likes

Model_ID, User_ID, Date

示例数据:

位置:

1 | NULL | USA      | usa
2 | NULL | Germany  | germany
3 | 1    | New York | new-york
4 | NULL | Rusia    | rusia

型号:

Seda    |   11  |   1
Zelda   |   33  |   2
Dilara  |   22  |   3

User_Likes

Seda    |   1   |   0
Seda    |   2   |   0
Zelda   |   1   |   0
Dilara  |   1   |   0

我的查询

SELECT U.Model_ID, M.Loc_ID, M.Name, M.Top_ID, M.Perma, COUNT(*) FROM User_Likes as U  
    LEFT JOIN ( SELECT Model.ID, Model.Loc_ID, Yer.Name, Yer.Top_ID, Yer.Perma From Model
        LEFT JOIN (SELECT Locations.Loc_ID, Locations.Name, Locations.Top_ID, Locations.Perma FROM Locations WHERE Locations.Loc_ID = ? OR Locations.Top_ID = ? ) as Yer ON Model.Loc_ID = Yer.Loc_ID ) 
        as M  ON M.ID = U.Model_ID
GROUP BY U.Model_ID

结果:

? = 1

Seda    |  1    |   USA         |   NULL    | usa | 2
Zelde   |  3    |   New York    |   1       | new-york | 2

这部分没问题,但问题从这里开始

? = 4
Seda    |  1    |   NULL        |   NULL    | NULL | 2
Zelde   |  3    |   NULL    |   NULL        | NULL | 2

这里的结果需要为空

谢谢,

1 个答案:

答案 0 :(得分:1)

尝试此查询,您不需要那些内部选择查询

SELECT U.Model_ID,
 M.Loc_ID,
 M.Name,
 M.Top_ID,
 M.Perma, 
COUNT(*) FROM User_Likes as U  
    LEFT JOIN  Model M ON M.ID = U.Model_ID
        LEFT JOIN Locations L ON M.Loc_ID = L.Loc_ID WHERE L.Loc_ID = ? OR L.Ust_ID = ? GROUP BY U.Model_ID