2010-11-24 15 views
0

私はmysqlデータベースでクエリを実行しています。私は、ユーザーが保存されているメインテーブルとそのユーザーの友達が格納されている別のテーブルを持っています。各ユーザーのために、どれくらい多くの友人がいるのかを知りたい。 これは私が得ているものです。Sqlの重複カウント重複

ID FirstName LastName FriendID 
1  Andrew Smith  1 
1  Andrew Smith  5 
1  Andrew Smith  9 
2  John  Doe  3 
2  John  Doe  5 

これは私が得たいものです。

ID FirstName LastName Friends 
1  Andrew Smith  3 
2  John  Doe  2 

これは私が知っていると私も私が使用したテーブルやクエリが表示されますに行くのに十分な詳細されていない場合。

+2

John Doe(ID 2)は同じFriendID(3)に2回マッピングされ、2人の友人とカウントされますか? –

+0

あなたは正しいです、更新されました。私はgroup by節を使わずにカウントをしようとしていました – andrew

答えて

4
SELECT ID, FirstName, LastName, COUNT(FriendID) AS Friends 
    FROM Users GROUP BY ID, FirstName, LastName 

一つは、あなたがすべてのUserFriendLinkレコードで、姓と名を格納本当にじゃない期待しています。そうであれば、Usersテーブル(ID、First、Last)とUserFriendsLinkテーブル(UserIDとFriendID)を使用してデータベースを正規化します。

+0

この例では、ユーザーに関連する多くの情報があると仮定できます。そしてその友人は決してユーザーではありません。私の実際のアプリケーションは投稿と投稿の投稿がある掲示板です。
投稿ごとに複数の返信がある可能性があります。返信に関連するフィールドは少なく、返信は決して投稿にはなりません。しかし、私が上に示した例は、関係 – andrew

+0

を示しています。私が上に示したテーブルは、いくつかの正規化テーブルに参加した私の左の結合クエリの結果でした。 – andrew

+0

助けてくれてありがとう、それは私が行方不明だった – andrew