社員名簿を考える。
マスターテーブル(ここでは便宜的に、ID と name だけを持つテーブル、
変更の少ないテーブルの意味で)が複数ある。
t_性別
+----+------+ | id | name | +-----------+ | 1 | 男性 | +-----------+ | 2 | 女性 | +----+------+
t_事業所
+----+--------+ | id | name | +----+--------+ | 1 | 東京 | +----+--------+ | 2 | 大阪 | +----+--------+ | 3 | 名古屋 | +----+--------+ ...
t_部署
+----+------+ | id | name | +----+------+ | 1 | 営業 | +----+------+ | 2 | 技術 | +----+------+ | 3 | 製造 | +----+------+ ...
社員名簿のテーブルには
性別, 事業所, 部署等はそれぞれマスターの id が入力されている。
t_社員名簿
+----+---------+-----------+------+--------+------+ | id | surname | givenname | 性別 | 事業所 | 部署 | +----+---------+-----------+------+--------+------+ | 1 | doe | john | 1 | 2 | 2 | +----+---------+-----------+------+--------+------+ | 1 | doe | jane | 2 | 1 | 1 | +----+---------+-----------+------+--------+------+ | 1 | foo | bar | 2 | 1 | 3 | +----+---------+-----------+------+--------+------+ ...
を以下のように出力させたい。
+----+---------+-----------+------+--------+------+ | id | surname | givenname | 性別 | 事業所 | 部署 | +----+---------+-----------+------+--------+------+ | 1 | doe | john | 男性 | 大阪 | 技術 | +----+---------+-----------+------+--------+------+ | 1 | doe | jane | 女性 | 東京 | 営業 | +----+---------+-----------+------+--------+------+ | 1 | foo | bar | 女性 | 東京 | 製造 | +----+---------+-----------+------+--------+------+ ...
この場合、以下の SQL で得られる。
SQL
1select 2 t_社員名簿.id 3 , t_社員名簿.surname 4 , t_社員名簿.givenname 5 , t_性別.name 6 , t_事業所.name 7 , t_部署.name 8from 9 ((t_社員名簿 left join t_性別 on t_社員名簿.性別 = t_性別.id) 10 left join t_事業所 on t_社員名簿.事業所 = t_事業所.id) 11 left join t_部署 on t_社員名簿.部署 = t_部署.id 12
わけですが、
t_社員名簿に(リレーションのある)フィールドが増えれば増えるほど、
left join の入れ子が増えて、とても可読性の悪いものに...
みなさんはどのように記述されているのでしょうか?
ご意見いただければと
[補足]
おおむね、access で使用しています(まれに、SQL Server)。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。