У меня есть две таблицы 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), поскольку с ними легче работать.