私は人々のためのテーブルと、参加可能なグループのテーブルを持っています。複数の人が同じグループに属していることは明らかです.1人は複数のグループに属している可能性があります。私はこの問題を解決するために、MySQLやSQLデータベースを使ってこれを行う方法を理解することができません。私には解決策がありますが、それが一般的に行われているのかどうかはわかりません。複数のグループの複数のユーザーSQL
私が試みたのは、person_idとgroup_idの列で構成されるメンバシップと呼ばれる3番目のテーブルでした。だから、実際にはそれは順序付けされたペアのためのテーブルです。
名前とプライマリキーのグループ、名前とプライマリキーのグループ、プライマリキーとグループのプライマリキーのメンバーシップがあります。そうすれば、同じ人物のプライマリキーを複数のグループに分けて複数のグループに分けることができます。
は、その後、特定のグループのすべてのメンバーを一覧表示するには、私はこのクエリ行うだろう:人が所属するすべてのグループを一覧表示するには
SELECT DISTINCT users.name AS 'Members of Group 2'
FROM users, memberships, groups
WHERE users.user_id = memberships.user_id
AND memberships.group_id = 2;
を、私はこのクエリを実行します。
SELECT DISTINCT groups.name AS 'Groups of User 3'
FROM groups, memberships, users
WHERE groups.group_id = memberships.group_id
AND memberships.user_id = 3;
distinctコマンドを使用する必要があります。そうでなければ、グループの総数に等しい回数だけリストを出力します。だから私は5つのグループがあり、特定のグループの人々のリストが必要な場合、同じリストを5回印刷します。なぜそれがそれをするのか分からない。しかし、私は「DISTINCT」という言葉を投げかけてから働きました。
それは機能的ですが、それはうっすらで、それが通常行われている方法かどうかわかりません。どのように人々は通常それを行うのですか?
通常、20th cで一般的な暗黙の(カンマ)結合の代わりに明示的な結合を使用します。 – Strawberry
@Strawberryコードでどのように見えるでしょうか? – Cordello
@Cordello - Googleの検索で、その質問に喜んで答えることができます。 – Parfait