我有一个客户数据库,我想启用父/子查看权限。
即。这就是我建立数据的方式(我不确定这是否是最好的管理方式)
id parent_id name
1 5 Cust 1
2 5 Cust 2
3 6 Cust 3
4 6 Cust 4
5 0 Group Head
6 5 Sub Group
7 0 Cust 5
8 0 Cust 6
因此,这种关系的直观表示是:
Group Head
- Cust 1
- Cust 2
- Sub Group
-- Cust 3
-- Cust 4
我需要对这种关系进行2次检查(这让我意识到我认为我没有最好的结构......
即。如果我以“子组”身份登录,则应仅返回Cust 3&但是,如果我以“Group Head”身份登录,它将返回Cust 1,Cust 2,Cust 3& cust 4(注意:它不包括'子组',因为它是一个组,而不是客户)
对于第一个问题,我想我还需要另一个标识为群组的字段?这是最好的方式吗?
对于第二个问题,我构建了这个查询,我需要扩展它以返回'子组'客户。
SELECT c.id,
c.parent_id,
c.name,
FROM Customer c
WHERE c.parent_id = '5'
返回:
id parent_id name
1 5 Cust 1
2 5 Cust 2
6 5 Sub Group
我希望结果显示:
id parent_id name
1 5 Cust 1
2 5 Cust 2
3 6 Cust 3
4 6 Cust 4
即。排除'子组',因为它不是客户,并告诉我任何有孩子的孩子。
注意:如果必须,我可以安排显示子组吗?
答案 0 :(得分:1)
至少引入类型列(可能是customer_type表以供参考)
所以说组头是1000,子组是1500
过滤类型小于1000的客户 所以我们可以有足够的空间来扩展
答案 1 :(得分:-1)
对我来说,孩子/父母的逻辑有点模糊,但我想你可以试试
SELECT c.id, c.parent_id, c.name,
FROM Customer c
WHERE c.parent_id = '5'
AND c.id not in (5,6)
结果如下
SELECT c.id, c.parent_id, c.name
FROM ttest c
WHERE c.parent_id in (5,6)
AND c.id not in (5,6)
ID PARENT_ID NAME
---- ---------- ----------
1 5 Cust 1
2 5 Cust 2
3 6 Cust 3
4 6 Cust 4