• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:3つのテーブルを結合したSELECT文)

3つのテーブルを結合したSELECT文に問題がある

このQ&Aのポイント
  • MySQLのSQL文に関する質問です。3つのテーブルを結合したSELECT文を使用してデータを呼び出そうとしていますが、一部のデータが呼び出せない状況です。問題の原因を特定できず、アドバイスを求めています。
  • 質問テーブルには質問データがあり、ユーザーテーブルとカテゴリーテーブルと結合してデータを呼び出そうとしています。しかし、一部のデータだけが呼び出せない状態です。どこに問題があるのか分からず、助言を求めています。
  • MySQLのバージョンは5.1.22-rcです。質問テーブルからデータを呼び出すためにSELECT文を使用していますが、結合したテーブルの一部のデータが呼び出せません。原因を特定できないため、アドバイスをお願いしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> $sql = "SELECT * FROM question WHERE q_no = '$get_q_no' AND state = 'on' AND q_state = 'on'"; > このように、questionだけを呼出すと問題ないものの 以下の2つを投げて、上記と同じ件数が得られるかどうか、試してみては? SELECT * FROM question INNER JOIN user ON question.q_user_no = user.user_no WHERE q_no = '$get_q_no' AND state = 'on' AND q_state = 'on' SELECT * FROM question INNER JOIN category2 C1 ON Q1.q_category_no = C1.no WHERE q_no = '$get_q_no' AND state = 'on' AND q_state = 'on'

a4_chapp
質問者

お礼

bin-chan様 早速のご回答ありがとうございました。 仰られるようにテーブルを2つに別けてみたところ、各テーブルに収まっているデータに誤りがあることに気が付きました。 ジャンルの数を減らしていたのですが、それにより検索対象が変わっていた次第です。 お恥ずかしい限りですが、ご指摘頂いたことにより気付くことが出来ました。 有難うございました!

その他の回答 (2)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

userかcategory2でレコード削除してたら不一致が生じますね

a4_chapp
質問者

お礼

ご親切な対応に感謝いたします。 ありがとうございました!

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

questionテーブルに格納されているq_user_noやq_category_noは userテーブルやcategoryテーブルに確実に対応するナンバーが収まっているのでしょうか? もし抜けてれば当然inner joinでつなぐ限り一部のデータしかでてきません。 とりあえず検証のため「inner join」の記述を「left join」に切り替えて テストしてみてください。

a4_chapp
質問者

お礼

yambejp様 ご親切なご回答ありがとうございます。 仰られるように、対応するナンバーが収まっていない事に気が付きました。 お騒がせして申し訳ありません。 ご親切な対応に感謝いたします。