2014-09-04 2 views
0

У меня проблема, и я не знаю, как ее решить. Я пытаюсь, но все равно не успеваю. У меня есть 3 таблицы:MySQL Несколько таблиц JOIN, то же название столбца

тур

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 

Это дает мне туры, но я до сих пор не знаю, как взять все страны, в том же запросе.

http://oi59.tinypic.com/1iby4l.jpg

+0

Редактировать свой вопрос с результатами, необходимыми для получения требуемых данных. –

ответ

1

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

Спасибо. Это именно то, что мне нужно –

Смежные вопросы