• 締切済み

数種類のテーブルを結合させて呼び出し

こんにちは。 サークルメンバーのマラソンのタイムを管理するデータベースを作っています。 現在作っているテーブルは、 memberinfo(会員番号(number)、名前(name)) full(会員番号(number)、日付(date)、タイム(time)) 10km(会員番号(number)、日付(date)、タイム(time)) です。 これら3つのテーブルからメンバー全員のすべての距離の記録を抽出するsql文を作っています。 例えば、会員番号1のAさんが2005年にフルマラソンの記録が2:55:47で2004年に10キロの記録が34:53、会員番号2のBさんが2003年にハーフマラソンの記録が1:20:12で2003年に10キロの記録が40:21だとすると 結果が 1 A 2005 full 2:55:47 1 A 2004 10km 34:53 2 B 2003 half 1:20:12 2 B 2003 10km 40:21 という結果が出力されるというものです。 sql文は以下のとおりです。 $sql = "select memberinfo.number, name, date, time from memberinfo, full, half, 10km where (memberinfo.number = full.number = half.number = 10km.number)"; これだとsql文が間違っているようです。 どうすればよいでしょうか? よろしくお願いします

みんなの回答

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

たぶん time や date 、fullで引っかかっています 意味が分からなかったら、とりあえず全部のテーブルとフィールド名を 「`」で囲ってあげてください それとSELECTの指定の仕方まちがっています、name date time のテーブルが指定されていません つまりこうなります SELECT `memberinfo.number`, `memberinfo.name`, `memberinfo.date`, `memberinfo.time` FROM `memberinfo`, `full`, `half`, `10km` WHERE ~以下略~

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

SQLでWHERE節にはこのように条件はかけません。 一個一個分割して"and" でつないでください。 where (memberinfo.number = full.number and memberinfo.number = half.number and memberinfo.number = 10km.number) って感じでしょうか?

kenkenkenken25
質問者

お礼

ありがとうございます。 whereの部分を訂正しました。 ほかにも問題があるみたいで、まだエラー表示されてしまうのですが、もう少しがんばってみます!

関連するQ&A