私はこのクエリを持っています:
SELECT DISTINCT
u.id,
u.name,
n.network_id,
n.perm
FROM users as u RIGHT OUTER JOIN
nets_permissions as n ON u.id = n.user_id AND n.perm<> 3
WHERE u.id!=3
結果は次のとおりです。
id name network_id perm
1 Luca Niccolini 9124823324095 1
2 Irene Pippo 9124823324095 0
2 Irene Pippo 1234567812345678124 1
クエリの結果は次のようになります。
id name network_id perm
1 Luca Niccolini 9124823324095 1
2 Irene Pippo 9124823324095 0
実際、一部のユーザーにネット上の許可を与えたいと思っています。このユーザーは、既にネット上で許可を持っている可能性がありますが、他のネットでも許可されています。したがって、この場合、ユーザー Luca はネット 9124823324095 での許可のみを持っていますが、ユーザー Irene は 2 つの異なるネットで 2 つの許可を持っています。ネット 9124823324095 のアクセス許可を付与したいので、3 番目のレコードは必要ありません。
しかし、ネット ID でフィルタリングすることはできません。他のネットでは許可されているが、自分のネットでは許可されていないユーザーがいる可能性があるためです。
つまり、クエリに 2 つ以上のレコードがあるユーザーの場合、ネットのレコードのみを取得できます。レコードを 1 つしか持っていないユーザーの場合、そのレコードを取得できます。
説明するのは難しいです。ご協力ありがとうございました!