別のテーブルの入力値に基づいてテーブルを選択しようとしています。まあ言ってみれば
SELECT tale0.*,class.*,hamburger.*
FROM
CASE tale0.id=1
THEN class
END
CASE tale0.id=2
THEN hamburger
これが進むべき道ですか、それとも別の方法がありますか?
いいえ、FROM句でCASEステートメントを使用することはできません。両方のテーブルを結合してから、値に基づいて関連するテーブルからフィールドをプルする必要があります。
SELECT
tale0.*,
CASE WHEN tale0.id = 1 THEN class.Column1 ELSE hamburger.Column1 END as Column1,
CASE WHEN tale0.id = 1 THEN class.Column2 ELSE hamburger.Column2 END as Column2,
...
FROM
table0, class, hamburger
-- include join conditions
これにアプローチする別の方法は
SELECT TALE0.*, CLASS.*, NULL AS HF1, NULL AS HF2, NULL AS HF3
FROM TALE0
INNER JOIN CLASS
ON CLASS.whatever = TALE0.whatever
UNION ALL
SELECT TALE0.*, NULL AS CF1, NULL AS CF2, NULL AS CF3, HAMBURGER.*
FROM TALE0
INNER JOIN HAMBURGER
ON HAMBURGER.whatever = TALE0.whatever
HAMBURGERのフィールドと同じ数のHF1、HF2、HF3などのフィールドが必要です。HF1、HF2、HF3などの代わりにHAMBURGERのフィールド名を使用します。同様に、CF1、CF2などを置き換える必要があります。 CLASSのフィールド名で。
幸運を祈ります。