之前我在这个问题mySQL SELECT help. IF or EXISTS?上得到了帮助,现在我有一个跟进问题。这是表格结构:
<code>
* user
user_id
name
* client
client_id
name
* user_client
user_client_id
user_id
client_id
</code>
现在我不想加入任何其他表,我只想提取权限,结果集应返回用户允许的客户端或所有客户端ID(如果用户存在)以及是否存在& #39;在user_client上没有该用户的条目。这意味着如果user_client上的user_id没有行,则他可以访问所有客户端。
我无法弄清楚如何在没有表格加入的情况下使其工作,就像我在上一个问题上那样(在那种情况下是消息)
谢谢你们!
编辑: 好的,试着更好地解释一下: 让我们对我有桌子说
<code>
user_id
1
2
3
client_id
10
11
12
13
14
On user_client table
user_id client_id
1 11
1 13
3 14
3 10
</code>
我希望结果如下: 如果user_id为1,则其结果集包含11和13。 如果user_id为3,则其结果集将包含14,10。 如果user_id为2,则其结果集包含10,11,12,13和14。
我希望我能更好地解释。
答案 0 :(得分:1)
您应该在问题中提供更多详细信息,以便人们真正了解您的需求。
无论如何,查询非常简单。只需从previous question获取查询并删除不必要的连接。
SELECT client_id
FROM user_client
WHERE user_id = :user_id
UNION
SELECT client_id
FROM client
JOIN `user` U
WHERE U.id = :user_id
AND NOT EXISTS (
SELECT *
FROM user_client
WHERE user_id = U.id
)