Объединение нескольких таблиц базы данных вместе? - PullRequest
0 голосов
/ 19 октября 2011

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

Мои таблицы и значения:*enter image description here enter image description here

Я хочу получить в качестве вывода 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 . '%"    
")

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

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

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

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

0 голосов
/ 19 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...