mysql,GROUP BY,mysql_fetch_arrayを使っ
mysql,GROUP BY,mysql_fetch_arrayを使って、あるフィールドに入ってる項目を複数出したい。
わかりづらいタイトルで申し訳ありません。
ある項目を、登録数の多い順に一覧表示をし、それに関するコメントを表示と思っています。
countで数を取り、GROUP BYでまとめ、order byで並び変えをしています。
しかし、おそらくGROUP BYでまとめているせいで、本来フィールドに複数入っているものが1つしか出てきません。現在の環境とやりたいことをまとめさせていただきます。
【関連するテーブル】
game
構造
titleid , title
1 , 鬼武者3
2 , FF10
3 , ヴィーナス&ブレイブス ~魔女と女神と滅びの予言~
・
・
・
(本当はもう少し複雑ですが、今回の質問にはあまり関係がないためは省略しております)
tag
構造
tagid , tag
1 , OPが素晴らしい
2 , EDが素晴らしい
3 , 世界観がいい
・
・
・
tag_title
構造
tagid , titleid , tagcom , tagcom_date(日付)
1 , 1 , すばらしい , 2010-09-05
1 , 1 , やってよかった , 2010-09-05
1 , 2 , よくできている , 2010-09-05
・
・
・
上記3つのテーブルをメインに使います。
【表示したいこと】
OPがいいゲーム
鬼武者3 登録数 : 3件
タグコメント: すばらしい(2010-09-05) / やってよかった(2010-09-05)
・
・
・
実際のページです ttp://www.game-minzoku.jp/tag.php?tagid=1
【組んだソース】 (CSSやら他のを省略)
$sql = "select * ,count(game.title)as count from game
left join tag_title on game.titleid = tag_title.titleid
left join tag on tag_title.tagid = tag.tagid
where tag_title.tagid = '{$tagid}' GROUP BY title order by count desc ";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
echo "登録数 : ";
echo $row["count"].件;
echo "<img src=\"",$row["img"],"\" alt=\"",$row["title"],"\" width=\"100\">";
echo $row["title"];
echo "タグコメント : ";
if ($row["tagcom"] != ""){
echo $row["tagcom"];
echo " (" . $row["tagcom_date"] . ") / ";
}
}
です。
前述もさせていただきましたが、おそらくGROUP BYでまとめると、1つしか出ないとかそんな感じだとは思うのですが、どうやって解消したら良いのかがわかりません。。。
(ttp://www.game-minzoku.jp/tag.php?tagid=1
が実際のページですが、タグコメントが複数登録されているものも、1つしか出てこなくなっている感じです)
拙いご説明で本当に恐縮ですが、もしお分かりになりましたらよろしくお願いします。
説明不足の点などあればおっしゃってください!
お礼
ご回答ありがとうございます。大丈夫そうですね。