2016-06-12 7 views
1

に私はこのようなテーブルを持っていますユーザーのすべての列を選択して、2人以上のグループチャットがユーザーと何人の定期チャット(2人のメンバー)であるかを選択する必要があります。列とカウント(*)の選択方法は?</p> <blockquote> <p>ユーザー(idUser、nameUser、など)</p> <p>チャット(idChat、txtChat)</p> <p>メンバー(idUser、idChat)</p> </blockquote> <p>:SQL

私の最初のアイデアは、2つ以上の選択肢を作って組合を使用することでしたが、それはそれほどうまく機能しません。

私はチャットしていたユーザーを取得しようとしたが、私は本当にaswell

またはそのような何かをカウントする方法がわからない、私は本当にしないでください。この

select * 
    from User 
    where idUser in (select idUser 
        from Members) 

のようなものを試してみました(*)私は選択した行の数を数える方法を知っていますが、別の列として取得する方法がわかりません

+1

と機能していないものをすでに試したとのご意見をお聞かせください。 http://stackoverflow.com/help/how-to-ask –

+0

を読んでくださいimmaはそれを編集してくれます。私が持っていたものは何も言えなかったので、他に何を言いたいのか分かりませんでした。それはあまり意味がありませんでした。 –

+0

@ LucasAraujo:https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ ..これは速い回答とアップノートでも役に立ちます – TheGameiswar

答えて

2

これはあなたのために何かを行う必要があります(GROUP BY) :

SELECT u.idUser, 
     u.nameUser, 
     COUNT(DISTINCT m.idChat) as countChats 
FROM [User] u 
LEFT JOIN Members m 
    ON u.idUser = m.idUser 
GROUP BY u.idUser, u.nameUser 

それともPARTITION BY

SELECT DISTINCT 
     u.idUser, 
     u.nameUser, 
     COUNT(m.idChat) OVER (PARTITION BY nameUser) as countChats 
FROM [User] u 
LEFT JOIN Members m 
    ON u.idUser = m.idUser 
+0

ありがとう返信のためにたくさん!私は本当に別のパーティションがあるかどうかわからないが、これは私がより近づくのに役立つだろう! –

+0

DISTINCT - 重複のないデータを取得するために、PARTITION BY - クエリ結果セットを複数のパーティションに分割します。これはGROUP BYに似ていますが、同じではありません。 – gofr1

+0

私はそれがより良い感謝方法を理解することによってグループとok! –

関連する問題