ちょっと題名の意味がわけわかめですが、つまりまあこういうことです。
データベースで区分とか設定情報とかは意味が異なったとしても1つのテーブルにまとめることが多いと思います。
下記は区分の名称を1つのテーブルでもたした例です。
"SettingDiv"列が区分IDで、"SettingID"列が各区分毎のデータを識別するIDです。
テーブル名は "Setting" とします。
ここで血液型区分が 1, 性別区分が 2, 職業区分が 3 と決めています。
┌─────┬─────┬────┐ │SettingDiv│SettingID │Contents│ ├─────┼─────┼────┤ │1 │1 │A型 │ ├─────┼─────┼────┤ │1 │2 │B型 │ ├─────┼─────┼────┤ │1 │3 │O型 │ ├─────┼─────┼────┤ │1 │4 │AB型 │ ├─────┼─────┼────┤ │2 │1 │男性 │ ├─────┼─────┼────┤ │2 │2 │女性 │ ├─────┼─────┼────┤ │3 │1 │会社員 │ ├─────┼─────┼────┤ │3 │2 │ニート │ ├─────┼─────┼────┤ │3 │3 │自営業 │ ├─────┼─────┼────┤ │3 │4 │学生 │ └─────┴─────┴────┘
これとは別に"Customer"テーブルがあり、各設定項目が設定テーブルのSettingと結びついています。
┌─┬──────┬─────┬──┬──┐ │ID│CustomerName│BloodType │Sex │Job │ ├─┼──────┼─────┼──┼──┤ │1 │テスト1 │2 │1 │1 │ ├─┼──────┼─────┼──┼──┤ │2 │テスト2 │ │2 │2 │ ├─┼──────┼─────┼──┼──┤ │3 │テスト3 │3 │2 │ │ └─┴──────┴─────┴──┴──┘
で、下記のような出力を出すようなSQLを書きたいのです。
┌─┬──────┬─────┬───────────┬──┬────────┬──┬────────┐ │ID│CustomerName│BloodType │BloodTypeText.Contents│Sex │SexText.Contents│Job │JobText.Contents│ ├─┼──────┼─────┼───────────┼──┼────────┼──┼────────┤ │1 │テスト1 │2 │B型 │1 │男性 │1 │会社員 │ ├─┼──────┼─────┼───────────┼──┼────────┼──┼────────┤ │2 │テスト2 │ │ │2 │女性 │2 │ニート │ ├─┼──────┼─────┼───────────┼──┼────────┼──┼────────┤ │3 │テスト3 │3 │O型 │2 │女性 │ │ │ └─┴──────┴─────┴───────────┴──┴────────┴──┴────────┘
要は、Costomerテーブルと複数の区分を持たせてあるSettingテーブルを結合したいわけです。
そして、Customerの各区分の値がnullでも結合させます。
で、この結果を出すにはSQLには下記のように結合すればいいみたいです。
SELECT Customer.ID , Customer.CustomerName , Customer.BloodType , BloodTypeText.Contents , Customer.Sex , SexText.Contents , Customer.Job , JobText.Contents FROM Customer LEFT OUTER JOIN Setting BloodTypeText ON Customer.BloodType = BloodTypeText.SettingID AND Customer.SettingDiv = 1 LEFT OUTER JOIN Setting SexText ON Customer.Sex = SexText.SettingID AND Customer.SettingDiv = 2 LEFT OUTER JOIN Setting JobText ON Customer.Job = JobText.SettingID AND Customer.SettingDiv = 3
LEFT OUTER JOINでSettingテーブルを区分回数分結合します。
区分はリテラルとして、結合条件に記述します。