匿名質問者

MySQLのテーブル3つを結合した時の出力がうまくいきません。


構成は「main」「sub」「user」3つのテーブルの結合になります。以下内容です

main テーブル
main_id
main_n
user_id
up_time

subテーブル
main_id

userテーブル
user_name
user_id

こちらのmainテーブルとuserテーブルを結合し、subテーブルのmain_idをカウントさせ、mainテーブルのup_timeを昇順にソートしたいと思っています。

SELECT main.main_id, main.main_n, main.user_id, main.up_time, user.user_id, user.user_name, user.user_id, COUNT( sub.t_id ) AS count
FROM main
INNER JOIN user ON main.u_id = user.U_Id
INNER JOIN sub ON main.main_id = sub.main_id
GROUP BY main.main_id
ORDER BY main.up_time DESC

上記のSQLを実行したところ、データが1件しか返ってこず困っています。
1件しか返って来ないので時間通りにソートできているかもわかりません・・・どうか御教授お願い致します。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2017/09/04 01:30:04

回答1件)

匿名回答1号 No.1

入力データ例と結果データ例がないと他人にはわからない気がしますが・・・
sub.t_id やmain.u_id = user.U_Idといった謎項目も登場していますし。
main_idの数を数えるたいのにGROUP BY main.main_idとしているのもよくわかりません。
それと集計関数を使う場合、SELECT列リストにはGROUP BYで指定した項目か
集計関数の列だけになるのが一般的です。MySQLは通ってしまうかもしれませんが

匿名質問者

sub.t_id やmain.u_id = user.U_Idはこちらの変換ミスでしたm(__)mすみません。
正しくはsub.main_idとmain.user_id = user.user_idになります。

2017/08/28 12:15:40

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません