- 締切済み
数種類のテーブルを結合させて呼び出し
こんにちは。 サークルメンバーのマラソンのタイムを管理するデータベースを作っています。 現在作っているテーブルは、 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文が間違っているようです。 どうすればよいでしょうか? よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- inu2
- ベストアンサー率33% (1229/3720)
たぶん 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)
SQLでWHERE節にはこのように条件はかけません。 一個一個分割して"and" でつないでください。 where (memberinfo.number = full.number and memberinfo.number = half.number and memberinfo.number = 10km.number) って感じでしょうか?
お礼
ありがとうございます。 whereの部分を訂正しました。 ほかにも問題があるみたいで、まだエラー表示されてしまうのですが、もう少しがんばってみます!