Intereting Posts
PHP – нужно удалить повторяющиеся символы в строке, но хотелось бы включить исключения Symfony2 Doctrine entity: Как создать таблицу в контроллере? Написать файл на php Получить текущее местоположение пользователя в PHP Почему session_start необходим при использовании сеанса? Linkedin разделяет URL-адреса / не анализирует открытый граф Рекомендации по URL-адресам с пробелом и специальными символами Соль и пароли Как добавить заголовок выше woocommerce-account-fields в Woocommerce Как показать разбиение на страницы с помощью товарного кода? Определите, запрашиваются ли HTTP-запросы из приложения Android или нет? и затем отреагировать соответствующим образом Будет ли повышать производительность опроса из базы данных SQL вместо файла для чата? Ошибка PDO при неправильном имени хоста Doctrine 2: обновить запрос с помощью построителя запросов Как преобразовать дату в timestamp в PHP?

Сочетание двух таблиц с sql JOIN?

Возможный дубликат:
Сочетание нескольких таблиц базы данных?

Я хочу, чтобы из двух таблиц базы данных выходили следующим образом:

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

Это мои таблицы:

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

Обновить:

он дает мне этот результат: http://img708.imageshack.us/img708/2404/outputnz.gif, но если я вложу $ find значение «55555», где вывод равен: http://img528.imageshack.us/ img528 / 3576 / outputnow.gif, но я хочу выйти: http://img832.imageshack.us/img832/120/outputwant.gif . Как оно?

$query = $this -> db -> query(' SELECT @rownum := @rownum + 1 rownum, tour_foreign.id, tour_foreign.name, MIN(tour_foreign_residence.name_re) AS name_re, tour_foreign.service, tour_foreign.date_go, tour_foreign.date_back, tour_foreign.term, tour_foreign.useradmin_submit, tour_foreign.date_submit, GROUP_CONCAT( tour_foreign_residence.name_re ORDER BY tour_foreign_residence.name_re SEPARATOR " $ " ) AS name_re_all 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_all LIKE "%' . $find . '%" GROUP BY tour_foreign.id '); 

Я получаю из выше sql следующую ошибку:

Ошибка базы данных Произошла
Номер ошибки: 1054

Неизвестный столбец 'tour_foreign_residence.name_re_all' в 'where clause'

SELECT @rownum: = @rownum + 1 rownum, tour_foreign.id, tour_foreign.name, MIN (tour_foreign_residence.name_re) AS name_re, tour_foreign.service, tour_foreign.date_go, tour_foreign.date_back, tour_foreign.term, tour_foreign.useradmin_submit, tour_foreign. date_submit, GROUP_CONCAT (tour_foreign_residence.name_re ORDER BY tour_foreign_residence.name_re SEPARATOR "$") AS name_re_all 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 " %% "OR tour_foreign_residence.name_re_all LIKE" %% "GROUP BY tour_foreign.id

Имя файла: D: \ xampp \ htdocs \ system \ database \ DB_driver.php

Номер строки: 330

Related of "Сочетание двух таблиц с sql JOIN?"

Вам нужно сгруппировать что-либо, или совокупность GROUP_CONCAT() будет собирать все строки в одну:

 GROUP BY tour_foreign.id 

Использование:

 $query = $this -> db -> query(' SELECT @rownum := @rownum + 1 rownum, tour_foreign.id, tour_foreign.name, MIN(tour_foreign_residence.name_re) AS name_re, tour_foreign.service, tour_foreign.date_go, tour_foreign.date_back, tour_foreign.term, tour_foreign.useradmin_submit, tour_foreign.date_submit, GROUP_CONCAT( tour_foreign_residence.name_re ORDER BY tour_foreign_residence.name_re SEPARATOR " $ " ) AS name_re_all 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 BY tour_foreign.id '); 

Попробуйте добавить предложение GROUP BY в конце инструкции SQL.

 SELECT a.name, GROUP_CONCAT(b.name_re ORDER BY b.name_re SEPARATOR " & "), a.term, a.time_go FROM tour_foreign a INNER JOIN tour_foreign residence b ON a.id = b.relation GROUP BY a.name 

Я просто изучаю SQL, поэтому я взял вашу проблему как упражнение. Надеюсь, что это работает.