2016-06-30 14 views
0

Ich bin mit etwas fest, das ich nicht herausfinden kann, wie man es löst. Es gibt 3 Tabellen Standorte, Modelle, User_Likes. Ich möchte die beliebtesten Modelle in einigen Ländern und Städten bekommen.Linke Verbindung mit Unterabfragen, die null zurückgeben

Tabelle Locations

Loc_ID, Top_ID, Name, Perma 

Tabelle Modell

Model_ID, Phone, Loc_ID 

Tabelle User_Likes

Model_ID, User_ID, Date 

Beispiel Daten:

Standorte:

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

Modelle:

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

User_Likes

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

Meine Suche

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 

Ergebnisse:

? = 1 

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

Dieser Teil ist in Ordnung, aber Problem beginnt hier über

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

Ergebnis hier über muss

Danke,

Antwort

1

Diese Abfrage Sie nicht brauchen, um diese inneren Auswahlabfragen

leer sein
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 
+0

Bitte überprüfen Sie dies und lassen Sie mich wissen –

+0

Es gibt so viele Probleme mit dieser Abfrage zum Beispiel gibt es keine L-Alias oder M –

+0

es ist ein kleiner Tippfehler bitte überprüfen Sie jetzt –