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

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

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

есть Table1

поля
- id_name1
- id_name2
- id_name3
....

есть Table2
поля
- id
- name

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

[syntax=mysql]
SELECT Table2.name
FROM Table1
LEFT OUTER JOIN Table2 ON (Table1.id_name1 = Table2.id)
[/syntax]

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

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

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

а вот тут я не понимаю как это обойти, может быть у sql есть какие-то средства для таких ситуаций, вложенные запросы или еще что?
прошу помочь, спасибо:)
Arhat109
Дата: 14.12.2012 05:57:02
Edd_Layer,

Ну раз Вы не хотите отвлекать(ся) на конкретные таблицы и вопросы, то тоже, дабы не писать чистый SQL:

А что Вам мешает сджойнить Т1 с Т2 сколько надо раз? Ну надо получить текстовку для трех полей - сделали 3 джойна, или сколько там... мешает-то что? :)
Добрый Э - Эх
Дата: 14.12.2012 06:13:21
Edd_Layer,

ситуации не разглядел, но вложенные запросы точно есть
Edd_Layer
Дата: 14.12.2012 06:30:51
Arhat109
Edd_Layer,

Ну раз Вы не хотите отвлекать(ся) на конкретные таблицы и вопросы, то тоже, дабы не писать чистый SQL:

А что Вам мешает сджойнить Т1 с Т2 сколько надо раз? Ну надо получить текстовку для трех полей - сделали 3 джойна, или сколько там... мешает-то что? :)


вот тут я и не понимаю, как следует составить запрос
если добавить еще плюс один вот такой джоин:
LEFT OUTER JOIN Table2 ON (Table1.id_name2 = Table2.id) 


ошибка: "имя таблицы "Table2" указано больше одного раза"

может все же конкретный запрос подскажете?:)
Edd_Layer
Дата: 14.12.2012 06:34:59
всё, разобрался с псевдонимами, не так их использовал

т.о. всё работает:
SELECT X1.name, X2.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) 
Arhat109
Дата: 14.12.2012 07:09:07
Edd_Layer,

К table1 тоже надо псевдоним прикрутить... оно кошернее будет. :)