質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

466閲覧

集計で作成したテーブルを内部結合したい

jiro-sima

総合スコア20

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/08/26 08:26

こちらに記載されている "それぞれのフォロー/フォロワー数を出す" で求められるテーブルと

SQL

1| comment | CREATE TABLE `comment` ( 2 `id` int(20) NOT NULL AUTO_INCREMENT, 3 `user_id` int(20) NOT NULL, 4 `nickname` varchar(20) NOT NULL, 5 `comment` varchar(140) NOT NULL, 6 `date` datetime NOT NULL, 7 PRIMARY KEY (`id`) 8) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 |

このテーブルとを連結し、最終的に
user_id, nickname, comment, date, follow_count, follower_countのレコードをcommentテーブル側の日付順で、
且つuser_idを基準にして取得したいのです

複雑で恐縮ですが宜しくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2019/08/26 13:34

質問とは関係ないけど、提示しているテーブルの内容からcommentテーブルじゃなくて、userテーブルでは? 適切なネーミングにしないとだんだんシステムがグチャグチャになってしまいますよ。
guest

回答1

0

ベストアンサー

単純に

SQL

1SELECT 2 comment.user_id, 3 comment.nickname, 4 comment.comment, 5 comment.date, 6 t.follow_count, 7 t.follower_count 8FROM ( 9 "それぞれのフォロー/フォロワー数を出す" クエリをコピペ(行末;を除く) 10) AS t 11INNER JOIN comment ON t.user_id = comment.user_id 12ORDER BY comment.date

じゃダメなんだろうか。

且つuser_idを基準にして取得したいのです

この意味がよくわかんなかったけど、絞り込みたいならWHERE句で。

投稿2019/08/26 08:53

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiro-sima

2019/08/26 20:50

こんな感じで出来ました ありがとうございました SELECT comment.userid, comment.nickname, comment.comment, comment.date, Y.follow_count, Y.follower_count FROM (SELECT X.user_id, SUM(CASE X.kbn WHEN 'follow' THEN X.cnt ELSE 0 END) AS follow_count, SUM(CASE X.kbn WHEN 'follower' THEN X.cnt ELSE 0 END) AS follower_count FROM(SELECT 'follow' AS kbn, fl.user_id AS user_id, count(fl.follow_id) AS cnt FROM follows fl GROUP BY fl.user_id UNION ALL SELECT 'follower' AS kbn, flw.follow_id AS user_id, count(flw.user_id) AS cnt FROM follows flw GROUP BY flw.follow_id ) X GROUP BY X.user_id) AS Y INNER JOIN comment ON Y.user_id = comment.userid WHERE comment.userid = ?(任意) ORDER BY date DESC;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問