带有join的sql查询group_concat

时间:2016-05-10 06:52:15

标签: mysql sql join concat

我试图在Int = Json的基础上用一个查询连接三个表 问题是,查询只显示一条记录而忽略了另一条记录,原因是group_concat

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

我在sql中不是很好,我知道这不是正确的方法,使用外键是正确的解决方案,无论如何我将这作为一种学习。

如果您有任何想法,任何一个PLZ分享

Db record image

DB query image

1 个答案:

答案 0 :(得分:0)

除了您使用的低效连接之外,添加group by子句,例如

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

此c lause将定义每行的唯一属性。