2016-05-10 4 views
0

Ich versuche, mit einer Abfrage drei Tabellen auf der Basis von Int = Json beizutreten Problem ist, Abfrage nur einen Datensatz zeigt und einen anderen Grund zu ignorierenSQL-Abfrage Group_concat mit beitreten

SELECT tour_package.id, tour_package.description AS description, 
     tour_package.NAME AS name, 
     Group_concat(DISTINCT(destination_continent.NAME)) AS continent_name, 
     Group_concat(DISTINCT(travel_style.NAME)) AS travel_style_name, 
     tour_package.img_path_thumb AS img_path_thumb 
FROM tour_package 
LEFT JOIN destination_continent 
    ON Find_in_set(destination_continent.id, Replace(Replace(Replace(tour_package.continent_id, '\[', '') , '\]', '') , '"', '')) 
LEFT JOIN travel_style 
    ON Find_in_set(travel_style.id, Replace(Replace(Replace(tour_package.travel_style_id, '\[', '') , '\]', '') , '"', '')) 
WHERE `tour_package`.`DELETE` = 0 
     && `destination_continent`.`DELETE` = 0 
     && `travel_style`.`DELETE` = 0 

GROUP_CONCAT Ich bin nicht so gut in SQL, ich weiß, dass das nicht der richtige Weg ist, die Verwendung von Fremdschlüssel ist die richtige Lösung dafür, jede Art, wie ich dies als ein Lernen nehme.

Jeder plz Aktie, wenn u eine Idee haben,

Db record image

DB query image

+0

Ich kann diese winzigen Bilder auf meinem Handy nicht lesen, daher kann ich Ihnen keinen Einblick in Ihre Joins geben. –

Antwort

0

Ganz abgesehen von der ineffizienten verbindet Sie verwendet haben, eine Gruppe von Klausel hinzufügen, wie diese

GROUP BY 
    tour_package.id 
    , tour_package.description 
    , tour_package.NAME 
    , tour_package.img_path_thumb 

Diese Klausel definiert die eindeutigen Attribute jeder Zeile.