Запрос к разным таблицам по значению поля.

Bolter

Новичок
Здравствуйте.
Имеется 3 таблицы: одна общая, две другие второстепенные.
1) Общее описание вопроса (ID, TITLE, DESCRIPTION, KIND): - QUEST_ALL
ID - ид
TITLE - заголовок
DESCRIPTION - описание
KIND - разновидность вопроса (от этого параметра будет зависеть, какую надо подключить таблицу из второстепенных)

2) Уточнение вопроса (ID, QUESTION_ID, MARKA, MODEL) - QUEST_1
IDD - ид уточнения вопроса
QUESTION_ID - ИД вопроса
MARKA - марка машины
MODEL - модель машины

3) Другое уточнение вопроса (ID, QUESTION_ID, CATEGORY, DETAIL) - QUEST_2
IDD - ид уточнения вопроса
QUESTION_ID - ИД вопроса
CATEGORY - категория раздела
DETAIL - учтонение категории

Подскажите как можно сделать такой запрос
чтобы выводился список вопросов из таблицы QUEST в зависимости от того какой стоит KIND
тоесть если KIND будет равен 1, то свзяь происходила с таблицей QUEST_1, а если KIND равен 2, то связь происходила с таблицей QUEST_2 ?
 

prolis

Новичок
Код:
left join quest_1 q1 on q1.question_id=quest_all.id and kind=1
left join quest_2 q2 on q2.question_id=quest_all.id and kind=2
 

iceman

говнокодер
нужно перепроектировать бд так чтобы у тебя небыло зависимости между сталбцами и таблицами

т.е. 2 и 3 соединить в одну таблицу, оставив поля и заполняй нужные поля, ненужные пусть будут в null

это самый простой способ.
 

Bolter

Новичок
baev
что то не получилось поставить условия во FROM , постоянно пишет ошибку. А еще где то прочитал что условия очень тормозят запросы.

prolis
спасибо, такой способ работает, но есть минус как мне указывать выводимые поля, если они разные для таблиц, (SELECT QUEST_ALL.*, QUEST_1.*, QUEST_2.*) они выведутся и позаменяют друг друга (у некоторых полей совпадают имена).

iceman
думаю так не получится, потому что будует не 2 дополнительные таблицы , а около 5-6.
 

prolis

Новичок
спасибо, такой способ работает, но есть минус как мне указывать выводимые поля, если они разные для таблиц, (SELECT QUEST_ALL.*, QUEST_1.*, QUEST_2.*) они выведутся и позаменяют друг друга (у некоторых полей совпадают имена).
- это что-то новенькое, предновогоднее чудо какое-то:)
Раз такой суеверный, используй псевдонимы названий столбцов (QUEST_ALL.field as QA_field )
 

iceman

говнокодер
Bolter
какие еще 5-6?? проектируй правильно а не неси всякую чушь.
 

Эдд

Новичок
iceman
Добрый день не могли бы вы помочь мне с аналогичным вопросом по выводу инфы из базы данных?!
Не могу совладать с кодом..
 
Сверху