我遇到了一些我无法弄清楚如何解决它的问题。有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
这里的结果需要为空
谢谢,
答案 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