1

別のテーブルの入力値に基づいてテーブルを選択しようとしています。まあ言ってみれば

SELECT tale0.*,class.*,hamburger.* 
FROM 
    CASE tale0.id=1 
        THEN class 
    END 
        CASE tale0.id=2 
            THEN hamburger

これが進むべき道ですか、それとも別の方法がありますか?

4

2 に答える 2

2

いいえ、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
于 2012-04-13T20:08:25.250 に答える
0

これにアプローチする別の方法は

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のフィールド名で。

幸運を祈ります。

于 2017-12-10T00:54:54.083 に答える