1

SQLServerでクエリの結果をグループ化する方法がわからないことがわかりました。3つのテーブルを持つSQLServer2005があります。

ドメイン:

- id
- name

実在物:

- domain_id
- user_id

ユーザー:

- id
- login

したがって、3番目のテーブルにまたがる2つのテーブル間の一般的な関係であり、複数のドメインが1人のユーザーに関連している可能性があります。

T-SQLクエリ:

SELECT domain.name, users.login 
FROM domain, entity, users 
WHERE domain.id = entity.domain_id AND entity.user_id = users.id 
GROUP BY users.login, domain.name

戻り値:

+------+-------+
| name | login |
+------+-------+
| dom1 | user1 |
| dom4 | user1 |
| dom5 | user1 |
| dom2 | user2 |
| dom3 | user3 |
+------+-------+

私の質問は、MySQLと同じものを返すT-SQLクエリを作成する方法です。

SELECT domain.name, user.login 
FROM domain, entity, user 
WHERE domain.id = entity.domain_id AND entity.user_id = user.id 
GROUP BY user.login

+------+-------+
| name | login |
+------+-------+
| dom5 | user1 |
| dom2 | user2 |
| dom3 | user3 |
+------+-------+
4

1 に答える 1

2

MySQLと同じものを返すMSSQL(およびほとんどの標準実装)を作成するには

SELECT MAX(domain.name), user.login  
FROM domain, entity, user  
WHERE domain.id = entity.domain_id AND entity.user_id = user.id  
GROUP BY user.login 

どちらの環境でも、FROM/WHERE結合は次のように表現する方が適切です。

FROM domain
    INNER JOIN entity
         ON domain.id = entity.domain_id 
    INNER JOIN user  
         ON entity.user_id = user.id  
于 2012-08-11T11:34:16.793 に答える