ちょっと先の未来クイズ第4問

MySQLテーブルの結合
select フィール名(field1,field2,field3)from xテーブル名 [inner/left/right] join yテーブル名 on 結合条件
解説書には説明されています
現在自分のデータベースは
ahogedb(テーブル名)
no
hoge1
hoge2

bhogedb(テーブル名)
no
ahogeno(ahogedbのnoを登録)
hoge3

ahogedbを表示してbhogedbでの訪問回数を表示させたいのです
bhogedbのahogenoにはahogedbのnoが逐次登録されています
表示はno,hoge1,hoge2に追加したahogenoのカウント数
select文の式の書き方を出来れば1列にして教えてください
ahogenoは別名の変数処理するのでしょうか

A 回答 (2件)

訪問回数とは? という説明がないので、想像で書きますが・・



select ahogedb.no,ahogedb.hoge1,ahogedb.hoge2,count(bhogedb.ahogeno) as c
from agogedb join bhogedb on (ahogedb.no=bhogedb.ahogeno)
group by ahogedb.no,ahogedb.hoge1,ahogedb.hoge2

でいいんじゃなかろうかと思いますが。

ahogedb.noのbhogedbでの”出現回数”が数えられます。
出現しないモノも含めて、ahogedbを表示するなら、
left joinを使うことで、可能かと思います。

#どうせなら、質問に使うフィールドやテーブルは
#わかりやすく&簡素な名前の方が良いと思いますよ。

この回答への補足

試行するにはちょっと時間を掛かりますのでお礼まで
参考は「OKWave」での質問一覧画面での右端の回答件数を、同時進行で2ケのテーブル参照で取り出したかったのです
考えていたことは
ahogedbは質問側
bhogedbは回答側
質問側noを
回答が有るごとに回答側ahogenoとしてnoを取り込みカウントしたかったのです。
再読み出しの時に取り出したかったのです

補足日時:2005/12/26 09:54
    • good
    • 0
この回答へのお礼

ほぼ完成
$sql = "select ahogedb.no,ahogedb.hoge1,ahogedb.hoge2, count(bhogedb.ahogeno) as calc from ahogedb left join bhogedb on (ahogedb.no=bhogedb.ahogeno) group by ahogedb.no,ahogedb.hoge1,ahogedb.hoge2";
○leftを付けました。これで目的は達成しましたが、この句の後ろにソート句を付けるとダメと言われています。後日別スレをします。そのせつもよろしく

お礼日時:2005/12/28 08:03

mysqlのバージョンによって処理はぜんぜん変わって


くると思いますので、まずはそれを表記すべきでしょう。

それとごめんなさい、意味が半分くらいわからないです。
ahogedbには1ユーザー1行のユニークなデータが
あり、bhogedbはアクセスのたびに1行ずつ増えて
いくということでしょうか?

そうであればbhogedbにahogedbをinner joinして
group byしてカウントをとればよいかと思います。
こんな感じでしょうか?

SELECT * ,count(*) as count FROM `bhogedb` as `b` inner join `ahogedb` as `a` on `b`.`ahogedbno`=`a`.`no` group by `a`.`no`

この手の質問はもう少し具体的な例を示しながら
聞いた方がわかりやすい回答を得られる可能性が
たかくなります。
    • good
    • 0
この回答へのお礼

試行するにはちょっと時間を掛かりますのでお礼まで
OKWaveでの質問一覧画面での右端の回答件数を取り出したかったのです

お礼日時:2005/12/26 09:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す