左连接子查询返回 null
Left join with subqueries returning null
我遇到了一些我不知道如何解决的问题。有 3 个 Tables 位置,模型,User_Likes。我想在一些国家和国家的城市获得最喜欢的模型。
Table 地点
Loc_ID, Top_ID, Name, Perma
Table 型号
Model_ID, Phone, Loc_ID
Table 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
这里的结果需要为空
谢谢,
试试这个查询你不需要那些内部 select 查询
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
我遇到了一些我不知道如何解决的问题。有 3 个 Tables 位置,模型,User_Likes。我想在一些国家和国家的城市获得最喜欢的模型。
Table 地点
Loc_ID, Top_ID, Name, Perma
Table 型号
Model_ID, Phone, Loc_ID
Table 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
这里的结果需要为空
谢谢,
试试这个查询你不需要那些内部 select 查询
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