powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сформировать хитрый запрос
6 сообщений из 6, страница 1 из 1
Сформировать хитрый запрос
    #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
Сформировать хитрый запрос
    #33182768
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.
Обходиться двумя, тремя etc...
...
Рейтинг: 0 / 0
Сформировать хитрый запрос
    #33183726
Astron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да. Либо смотри в сторону PREPARE, если подойдет под задачу....
...
Рейтинг: 0 / 0
Сформировать хитрый запрос
    #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
Сформировать хитрый запрос
    #33184054
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Steven13
Если скончаемое и извесное количество таблиц, то думаю также можно сделать.

Нет. Нельзя по-любому.
...
Рейтинг: 0 / 0
Сформировать хитрый запрос
    #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
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сформировать хитрый запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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