我有一个问题,我不知道如何解决。我正在尝试,但仍然没有成功。
我有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/

10-10 11:14