1

これは私のSQLの質問です

表-アクティビティ

id activity userID

0 99 1

1 99 2

2 99 3

3 88 1

4 77 2

5 77 3

このテーブルをクエリして、アクティビティの選択をプールするような結果を生成したいと思います。

different users:

99 1 2 3

88 1

77 2 3

私の最初の試みは、JOINを使用してテーブルを再帰的に自己結合することです。しかし、それは頭痛の種です。誰か他の提案がありますか?

ありがとう

編集:別の問題。グループ化する前に、ユーザーが友達かどうかを確認したい場合はどうすればよいですか?

テーブル-友達

id userID friendID
0 1 2
1 2 1
2 1 3
3 3 1
4 2 3
5 3 2

つまり、彼らは(両方向で)友達です。それから、彼らが再び友達になっているので、プーリング(GROUP BY)を実行したいと思います。

繰り返しになりますが、ありがとうございます。皆さんは私に素晴らしいガイダンスを提供してくれます。

4

5 に答える 5

2
select activity,GROUP_CONCAT(userID,' ') from Activity
group by activity
于 2012-08-07T07:59:00.937 に答える
1
select act,GROUP_CONCAT(userid,' ') from users
group by act
order by act desc

SQLデモはこちら

于 2012-08-07T08:01:15.187 に答える
1

これを試して:

CREATE TABLE myTable (id int, activity int, userID int);
INSERT INTO myTable VALUES (0, 99, 1);
INSERT INTO myTable VALUES (1, 99, 2);
INSERT INTO myTable VALUES (2, 99, 3);
INSERT INTO myTable VALUES (3, 88, 1);
INSERT INTO myTable VALUES (4, 77, 2);
INSERT INTO myTable VALUES (5, 77, 3);

SELECT activity,GROUP_CONCAT(userID,' ')
  FROM mytable
 GROUP BY activity
 ORDER BY activity DESC;
于 2012-08-07T08:02:52.953 に答える
1

アクティビティGROUP BYGROUP_CONCAT()

このコードのように:

SELECT activity,GROUP_CONCAT(userID,' ') AS Groups
FROM Activity
GROUP BY activity
ORDER BY activity DESC;

フィドルを見る

于 2012-08-07T08:04:49.263 に答える
1

GROUP_CONCATあなたが探しているものです:

SELECT   activity,
         GROUP_CONCAT(userID,' ') AS Groups
FROM     Activity
GROUP BY activity
ORDER BY activity DESC;
于 2012-08-07T08:10:23.947 に答える