• 締切済み

MySQLを使って値を引っ張ってきているのですが、1つしかとってこれません。

HPを作っている者です。 perlとMySQLを使ってデータをHPに表示させているのですが、下記のような方式でデータを取出した場合に問題がおきました。  掲示板を作成しています。 Aテーブルから掲示されたデータを取ってくる際に、一覧表示させました。 一覧表示から「詳細」をクリックすると詳細掲示と詳細掲示に対して意見を述べる書込みが表示されています。(意見の述べる所はBテーブルから引っ張ってきています。)  一番最初に記述したとおりAテーブルから掲示されたデータを取出して一覧表示する際に、個々の掲示情報に「意見を述べる書込み」Bテーブルが何件あるのかも表現しようと思ったのですが、値を表示することもできず、あげくのはてに一覧表示どころか1番目のデータしかとってこなくなり、後のでーたは空白表示されるようになってしまいました。 どうかどんな情報でも良いのでアドバイスをいただけないでしょうか?お願いします。 ソース開始---------------------------------- *ここにAテーブルからデータを取ってくる処理をしています。(省略) ###$num件分処理を繰り返す(一覧) for ($i=0; $i<$num; $i++) { ###データを吐き出す @buffer = $Com::sth->fetchrow_array; ###Bテーブルの件数を吐き出す $COUNT=qq{SELECT count(*) }; $COUNT.=qq{FROM Atable,Btable }; $COUNT.=qq{WHERE Atable.A = Btable.B}; &Com::DB_ExecuteNofinish($COUNT,$err); @Kakikomi = $Com::sth->fetchrow_array; $Com::sth->finish; *ここにAテーブルのデータとBテーブルのデータを引き出したHTMLが表示されます。 一覧表示(省略)

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

SELECT count(*) FROM Atable,Btable WHERE Atable.A = Btable.B; 上記クエリで、望んだ情報がとれてますか? これだと、結局意見の総件数を返しているだけで、しかもループ不変だと思われますが。 各掲示IDについての意見数だったら、こんな感じじゃ無いでしょうか? select count(*) from Btable where B='${掲示ID}'; あるいは、一発で全部取るなら、 select TA.A, Count(TB.B) from Atable TA left join Btable TB on TA.A=TB.B group by TA.A; とか。

すると、全ての回答が全文表示されます。

関連するQ&A