Сочетание нескольких таблиц базы данных?

У меня есть две таблицы tour_foreign и tour_foreign_residence в базе данных и вы хотите объединить эту две таблицы вместе, которые выводятся из кода PHP в следующем примере:

Мои таблицы и значения:

введите описание изображения здесьвведите описание изображения здесь

Я хочу получить как выход tour_foreign.id = tour_foreign_residence.relation :

Однонедельный тур по Стамбулу_1 | 88888 и 99999 $ 112233 $ 445566 | Три ночи и два дня | 15:29
Однонедельный тур по Стамбулу_2 | 55555 & 66666 $ 77777 | Три ночи и два дня | 12:03
Однонедельный тур по Стамбулу_3 | 11111 & 22222 $ 33333 $ 44444 | Три ночи и два дня | 12:03

Моя попытка – это, но это не дает мне то, что я хочу выше:

 $this -> db -> query(" SELECT @rownum := @rownum + 1 rownum, tour_foreign.id, tour_foreign.name, tour_foreign_residence.name_re, tour_foreign.term, tour_foreign.time_go, tour_foreign.time_back, tour_foreign.type_of_vehicle FROM tour_foreign INNER JOIN tour_foreign_residence ON ( tour_foreign.id = tour_foreign_residence.relation ) JOIN (SELECT @rownum := 0) r WHERE tour_foreign.name LIKE "%' . $find . '%" OR tour_foreign_residence.name_re LIKE "%' . $find . '%" ") 

Как это исправить?

Попробуйте использовать GROUP_CONCAT () для объединения имен из таблицы tour_foreign_residence

Не знаете, почему вы присоединяетесь к @rownum, это может быть бесполезно с вашим набором результатов. Попробуйте вытащить его и посмотреть, работает ли он.

Ваше внутреннее соединение выглядит нормально, за исключением того, что я никогда не видел его с обернутыми парами, но я подозреваю, что он будет работать так, как ожидалось. Чтобы проверить ваш запрос, вы можете удалить сложное предложение where и просто поместить что-то вроде where tour_foreign.id = 1.

Что-то вроде:

 SELECT tf.* FROM tour_foreign AS tf INNER JOIN tour_foreign_residence AS tfr ON tfr.relation = tf.id WHERE tf.id = 1 

Я реализовал псевдонимы для более длинных имен таблиц (tf и tfr), поскольку с ними легче работать.