我可能会以错误的方式解决这个问题,因为我找不到像这样的问题。
我有一个产品表
id - name - parent
---|------|--------
1 |p-A | 0 -default
2 |p-A1 | 1 -default
3 |p-u1 | 0 -USER ADDED
我有一个将用户 ID 与 PID 耦合的关系表(但它也有一个开/关字段)
id - uid - pid - on(0=no, 1=yes)
---|-----|-----|----
1 | 0 | 1 | 1 - uid-0 for default association(ok?)
2 | 0 | 2 | 1
3 | 1 | 3 | 1 - USER ADDED association
4 | 1 | 2 | 0 - USER does not want this default product
所以我可以获取默认值,并且用户使用这样的查询添加产品但显然 AND 子句什么都不做,因为我已经在第一个 WHERE 子句中选择了行。
SELECT prod.id, prod.name, prod.parent, rel.pid, rel.uid, rel.on
FROM prod, rel
WHERE rel.uid = 0 OR rel.uid = '$uid'
AND rel.on <> 0
我似乎无法弄清楚如何在不通过 php 函数的情况下省略查询中为特定用户关闭的产品
注意:我知道我可以为所有用户创建默认的用户/产品关联,但我不想为每个用户插入这 15 个关联。我也不想制作默认产品表。