Я попытался обойти это. Но я думаю, что меня нет.Условное изменение таблицы в MySQL Query
У меня есть 3 таблицы:
Этот рассказ содержит все вопросы и типы вопросов:
Table: Ref
id | type | info
==========================
1 SS Education
---------------------------
2 RB Gender
---------------------------
3 ST State
Эта таблица содержит "варианты" для вопросов в приведенной выше таблице «Ref`
Table: ref_ans
id | q_id | answer_text
===========================
1 1 Masters
---------------------------
2 1 Bachelors
---------------------------
3 1 Undergrad
---------------------------
4 2 Male
---------------------------
5 2 Female
---------------------------
6 2 Dont want to disclose
В этой таблице содержатся состояния (type
= "ST" в таблице Ref
)
Table: us_states
id | answer_text
===========================
1 Alaska
---------------------------
2 Alabama
---------------------------
3 Arkansan
---------------------------
4 Arizona
---------------------------
5 Baltimore
---------------------------
etc
Результат я хочу это:
ref.id, ref_ans.id, ref.answer_text/us_states.answer_text
* для данного ref.question_id
*.
И условие: Если question_id, для которого запрошены ответы, является «ST», он должен вытащить ответы от us_states
, в противном случае он должен вытащить из таблицы ref-ans
.
Я пробовал это. Очевидно, что это не сработало:
SELECT ref.id,
CASE WHEN ref.type = 'ST' THEN
(SELECT ID, answer_text FROM us_states)
ELSE
(SELECT id, answer_text FROM ref_ans)
END
FROM ref
WHERE ref.ID = <id>
Любые идеи?
как 'us_states.id' связаны с другими таблицами? Я имею в виду, что 'us_states.id' то же самое, что' Ref.id'? –
№ Нет ссылки на ref.id в us_states –