Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сформировать хитрый запрос / 6 сообщений из 6, страница 1 из 1
25.07.2005, 14:10:34
    #33182651
needful
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать хитрый запрос
Всем привет! Есть таблицы t1 (поля Id, tblName) и t2 (поля Id, some1, some2). Допустим в t1 такие данные:
Id tblName
1 t2
2 t3

Таблицы связаны по полю Id. Возможно ли сделать такой запрос, чтобы данные были получены из двух таблиц как JOIN, но при этом имя второй таблицы бралось из поля 1-й таблицы. То есть я зпрашиваю данные из t1, получаю поле tblName='t2' и тут же делаю JOIN на таблицу t2 и получаю остальные поля. Если в tblName='t3', то JOIN идет на таблицу t3 и т. д. Или придется обходиться двумя запросами?
...
Рейтинг: 0 / 0
25.07.2005, 14:38:35
    #33182768
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать хитрый запрос
Нет.
Обходиться двумя, тремя etc...
...
Рейтинг: 0 / 0
25.07.2005, 21:24:24
    #33183726
Astron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать хитрый запрос
Да. Либо смотри в сторону PREPARE, если подойдет под задачу....
...
Рейтинг: 0 / 0
26.07.2005, 00:25:19
    #33183808
Steven13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать хитрый запрос
Я делал такой вариант для поля таблицы с колонками:
last_ability, pck, grd, drb...

В last_ability - стоит какую котонку нужно умножать на 10.
И с помощю такой конструкции, срабатывало:


Select (CASE `last_ability`
WHEN 'pck' THEN `pck`
WHEN 'grd' THEN `grd`
WHEN 'drb' THEN `drb`
WHEN 'pos' THEN `pos`
WHEN 'rng' THEN `rng`
WHEN 'pas' THEN `pas`
WHEN 'str' THEN `str`
WHEN 'acc' THEN `acc`
ELSE '0' END) *10 From TEST

Если скончаемое и извесное количество таблиц, то думаю также можно сделать.
...
Рейтинг: 0 / 0
26.07.2005, 09:33:30
    #33184054
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать хитрый запрос
Steven13
Если скончаемое и извесное количество таблиц, то думаю также можно сделать.

Нет. Нельзя по-любому.
...
Рейтинг: 0 / 0
26.07.2005, 20:04:31
    #33185795
Steven13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать хитрый запрос
я так понял 3 таблицы:
t1 (поля Id, tblName) и t2 (поля Id, some1, some2) t3 (поля Id, some1, some2)


Код: plaintext
select if (tt1.tblName='t2', tt2.some1, tt3.some1) as some1 from t1 tt1 left outer join t2 tt2 on tt1.Id=tt2.Id left outer join t3  tt3 on tt3.Id=tt1.Id 

В результате мы получаем одним запросом то что нужно.
Если больше 2 таблиц, то просто использовать CASE.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сформировать хитрый запрос / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]