Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Объединение двух таблиц

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
pro_xaoc
Отправлено: 26 Мая, 2016 - 17:17:28
Post Id


Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Доброго времени суток!
Помогите пожалуйста с запросом, полдня гуглю - решение не могу найти.
В общем, для наглядности есть две таблицы:

Таблица STREETS - названия улиц
CODE (SQL):
скопировать код в буфер обмена
  1. id      name
  2. 4    Московский
  3. 7    Яблочная
  4. 10   Гагарина


Таблица USERS - пользователи с адресами, где цифры в адресах - id с таблицы названии улиц
CODE (SQL):
скопировать код в буфер обмена
  1. id       fio        street_from    street_to
  2. 1      Арсен         4                  10
  3. 2      Коля          7                   4
  4. 3      Петя          4                    7
  5. 4      Степан       10                  7


Суть проблемы: надо сделать запрос с JOINами, чтобы получилась следующая таблица

CODE (SQL):
скопировать код в буфер обмена
  1. id       fio        street_from    street_to   street_from_name          street_to_name
  2. 1      Арсен         4                  10           Московский                Гагарина
  3. 2      Коля          7                   4             Яблочная                  Московский
  4. 3      Петя          4                    7            Московский               Яблочная
  5. 4      Степан       10                  7              Гагарина                  Яблочная


Мой sql-код:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT users.*, streets.name AS street_name
  2.        FROM users
  3.        LEFT JOIN streets
  4.             ON users.street_from = streets.id AND users.street_to = streets.id


Дело в том, что при в моем случае выбирается последняя street_to_name. Копая в разные JOIN-ы (INNER, RIGHT и т.д.) совсем запутался. Помогите пожалуйста
 
 Top
Sail
Отправлено: 27 Мая, 2016 - 09:22:42
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




pro_xaoc, для такого случая есть возможность неоднократно использовать одну таблицу в запросе для получения данных из разных её строк по разным критериям, применяя псевдоним для именования таблицы:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT users.*, street_from.`name` AS street_from_name, street_to.`name` AS street_to_name
  2.        FROM users
  3.        LEFT JOIN streets street_from
  4.             ON users.street_from = street_from.id
  5.        LEFT JOIN streets street_to
  6.             ON users.street_to = street_to.id
 
 Top
pro_xaoc
Отправлено: 27 Мая, 2016 - 09:35:45
Post Id


Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Sail пишет:
pro_xaoc, для такого случая есть возможность неоднократно использовать одну таблицу в запросе для получения данных из разных её строк по разным критериям, применяя псевдоним для именования таблицы:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT users.*, street_from.`name` AS street_from_name, street_to.`name` AS street_to_name
  2.        FROM users
  3.        LEFT JOIN streets street_from
  4.             ON users.street_from = street_from.id
  5.        LEFT JOIN streets street_to
  6.             ON users.street_to = street_to.id

Спасибо! То, что надо. Не знал, что можно неоднократно использовать одну таблицу в JOIN-ах Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB