複雑な SQL クエリに問題があります。
user、user_type1、user_type2の3つのテーブルがあります
ユーザーのタイプに応じてユーザーの詳細を選択しようとしています。CASE を使用して LEFT JOIN のテーブル名を動的に選択しようとしましたが、失敗しました。UNION でも試しましたが、列は同じでなければならないようです。
機能する唯一の方法は、2 つのテーブルを結合することですが、結果には間違ったテーブルからのすべての null 値も含まれています...
これらの間違ったフィールドを取り除く方法、または適切なテーブルに対して LEFT JOIN のみを実行する方法を探しています。
ここに私の現在のコードがあります:
SELECT
user.*,
user_type1.*,
user_type2.*
FROM user
LEFT JOIN user_type1
ON user_type1.user_id = user.id
LEFT JOIN user_type2
ON user_type2.user_id = user.id
AND user.id = 1
通常、私は本当に単純なクエリしか実行しないので、少し混乱しています。あなたが私を助けることができれば、ありがとう.
編集: メイン テーブルは user で、フィールドは ID と Type の 2 つだけです。
他のテーブルには、ユーザーに関する詳細が含まれています。user_type1 は人用です。フィールドは、名前、年齢、...
user_type2 は会社用です。フィールドは、名前、法的形態、従業員数、...
したがって、ユーザー テーブルの ID しか知らないので、適切なテーブルのフィールドを取得する必要があります。
user.id が 1 で user.type が type1 の場合、mysql に user_type1 テーブルからすべてのフィールドを取得させたい...