
MySQLについて質問です。以下のSQL文によってtblarchitectの全データとその後ろにareaidに対応するareanameを結合しました。さらにその後ろにexpertiseidに対応するexpertisenameを結合するにはどのように記述すればよいのでしょうか?
つまり「tblarchitectの全データ」+「areaidに対応したareaname」+「expertiseid1に対応したexpertisename」+「expertiseid2に対応したexpertisename」+「expertiseid3に対応したexpertisename」+「expertiseid4に対応したexpertisename」というように出力したいです。
SELECT tblarchitect.*, area
FROM tblarchitect
RIGHT JOIN tblarea
ON tblarchitect.areaid = tblarea.areaid
ORDER BY no DESC;
テーブル構造
tblexpertise
+---------------+
| Field |
+---------------+
| expertiseid |
| expertisename |
+---------------+
tblarea;
+----------+
| Field |
+----------+
| areaid |
| areaname |
+----------+
tblarchitect;
+-----------------+
| Field |
+-----------------+
| no |
| name |
| rname |
| posision |
| zip |
| address |
| tel |
| fax |
| url |
| mail |
| areaid |
| info |
| expertiseid1 |
| expertiseid2 |
| expertiseid3 |
| expertiseid4 |
| photofilename |
| prphotofilename |
| regdate |
+-----------------+
http://dev.mysql.com/doc/refman/4.1/ja/join.html
そのまますべて JOIN していくだけでいいです。
SELECT arc.*, area,
exp1.expertisename, exp2.expertisename, exp3.expertisename, exp4.expertisename,
FROM tblarchitect AS arc
RIGHT JOIN tblarea USING ( areaid )
LEFT JOIN tblexpertise as exp1
ON arc.expertiseid1 = exp1.expertiseid
LEFT JOIN tblexpertise as exp2
ON arc.expertiseid1 = exp2.expertiseid
LEFT JOIN tblexpertise as exp3
ON arc.expertiseid1 = exp3.expertiseid
LEFT JOIN tblexpertise as exp4
ON arc.expertiseid1 = exp4.expertiseid
ORDER BY no DESC;