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 |
+-----------------+

回答の条件
  • 1人5回まで
  • 登録:2006/10/06 10:01:21
  • 終了:2006/10/06 12:23:12

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402006/10/06 10:23:14

ポイント100pt

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;
id:moks

上手くいきました。ありがとうございました。

2006/10/06 12:22:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません