SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.12.2012 05:49:12

Edisson
Участник
Откуда: Yekaterinburg
Зарегистрирован: 22.10.2009
Сообщений: 15

запрос различных данных из одного поля с подстановкой

Привет!
столкнулся с такой ситуацией, дали базу и менять в ней ничего не хотят.
а то, что хотят получить от неё, показалось довольно странным, можно ли реализовать одну вещь, хочу спросить совета.

по порядку.
чтоб не отвлекаться на названия, в псевдоименах:

есть Table1

поля
  - id_name1
  - id_name2
  - id_name3
....
       
есть Table2
поля
  - id
  - name
          
если нам надо получить в запросе name из второй таблицы по айдишнику из первой, делаем джоин и никаких проблем.


SELECT Table2.name
FROM Table1
LEFT OUTER JOIN Table2 ON (Table1.id_name1 = Table2.id)
 


но проблема в том, что в Table2 записи под определенными айдишниками взаимосвязаны логически не только с id_name1 но и с id_name2 и с id_name3 из Table1.

и всё это хотят запрашивать одновременно.
т.е. фактически надо обращаться/выводить в результате запроса Table2.name не один раз, что вызывает в запросе ошибку.

если бы каждая взаимосвязь была в своей отдельной таблице, тогда бы проблем естественно вообще не было.

а вот тут я не понимаю как это обойти, может быть у sql есть какие-то средства для таких ситуаций, вложенные запросы или еще что?

спасибоsmile

Неактивен

 

#2 14.12.2012 06:18:59

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: запрос различных данных из одного поля с подстановкой

Сделать 3 раза джойн одной и той же таблицы, присвоив ей разный псевдоним:

SELECT X1.name, X2.name, X3.name
FROM Table1
LEFT OUTER JOIN Table2 AS X1 ON (Table1.id_name1 = X1.id)
LEFT OUTER JOIN Table2 AS X2 ON (Table1.id_name2 = X2.id)
LEFT OUTER JOIN Table2 AS X3 ON (Table1.id_name3 = X3.id);

Неактивен

 

#3 14.12.2012 06:38:59

Edisson
Участник
Откуда: Yekaterinburg
Зарегистрирован: 22.10.2009
Сообщений: 15

Re: запрос различных данных из одного поля с подстановкой

rgbeast написал:

Сделать 3 раза джойн одной и той же таблицы, присвоив ей разный псевдоним:

SELECT X1.name, X2.name, X3.name
FROM Table1
LEFT OUTER JOIN Table2 AS X1 ON (Table1.id_name1 = X1.id)
LEFT OUTER JOIN Table2 AS X2 ON (Table1.id_name2 = X2.id)
LEFT OUTER JOIN Table2 AS X3 ON (Table1.id_name3 = X3.id);

большое спасибо!
что-то я с алиасами пролетел в самом деле)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson