我有一个产品表:
ID, Name, Time, Creator, Owner, Size, Color, ...
我想禁止某些用户使用某些产品。我想到了 2 个解决方案。
1) 我创建一个表,其中包含有关被禁止用户的信息:
Product ID, User ID, BannedOrNot
2) 在产品表中为每个用户添加一列。
ID, Name, Time, Creator, Owner, Size, Color, ..., User 1, User 2, User 3
我在此处添加用户是否被禁止使用该产品。
我知道第一个解决方案更好。但我每秒都要处理大量的查询。因此,出于性能考虑,我想避免许多查询。
用户未选择特定产品。该脚本确实根据尺寸、颜色
等自动选择产品。但问题是它不知道用户是否被禁止使用该产品。
第一个解决方案需要首先从属于访问产品表的用户的禁止列表中获取所有数据。然后根据用户是否被禁止从产品表中选择条目。
如果重要的话,我正在使用 PHP、MySQL。
最佳答案
我更喜欢第一个解决方案。仅在表中为每个被禁止的用户添加一行,并将其添加到您的产品查询中
在 FROM 子句中
LEFT JOIN banned_table ON (products.id = banned_table.producs_id
AND banned_table.user_id = <current_user_id>)
在 WHERE 子句中
... AND banned_table.id IS NULL
这仅检索banned_table(如果存在)的一行,并避免查询结果包含被禁止的产品。
希望它适合您。
关于php - SQL:特定项目的用户禁止列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24032602/