我有一个问题,我不知道如何解决。我正在尝试,但仍然没有成功。
我有3张桌子:
游览
id_tour title
1 Discovery
2 Something
tour_to_country
id_tour id_country
1 66
1 35
1 673
2 88
2 91
国家
id_country title
1 Country_1
2 Country_2
... ...
999 Country_999
我想从游览表中选取2个游览,选择每个游览中的所有国家/地区并显示其名称。
我想从每个游览中选择所有国家,但游览应显示一次。
这是我尝试过的:
SELECT tour.id_tour as tour_id, tour.title as tour_title, country.title as country_title, tour.* FROM tour
INNER JOIN tour_to_country ON tour.id_tour = tour_to_country.id_tour
INNER JOIN country ON country.id_country = tour_to_country.id_country
GROUP BY tour.id_tour
它给了我旅行团,但我仍然不知道如何在同一查询中使用所有国家。
最佳答案
GROUP_CONCAT应该为您解决问题。您可以指定顺序和分隔符。我认为这就是您想要实现的目标。
SELECT tour.id_tour as tour_id, tour.title as tour_title, GROUP_CONCAT(country.title ORDER BY country.title SEPARATOR ',') as country_title, tour.* FROM tour
INNER JOIN tour_to_country ON tour.id_tour = tour_to_country.id_tour
INNER JOIN country ON country.id_country = tour_to_country.id_country
GROUP BY tour.id_tour
关于mysql - MySQL多个表JOIN,相同的列标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25665302/