我有一个机密网站...我正在尝试制作一个SQL查询,用于计算用户在过去7天内发布的广告数量,但我遇到了问题......
我正在尝试在用户个人资料中显示例如: [用户名]在过去7天内发布了30个广告
这是我的SQL查询 - >
SELECT COUNT(*)
FROM table_name
WHERE user_id = '[user_id]' AND created_date > NOW() - INTERVAL 7 DAY
所以在我的情况下,“table_name”包含来自所有用户的所有广告,并且“user_id
='[user_id]'”我向用户显示他的广告数量,向用户B显示他的广告数量广告等...
因此,此查询有效,它会正确计算广告数量,但是,例如,如果用户在网站上输入以及DELETE的1,2或其他任意数量的广告,则此数字将从“[用户名]”中“删除”在过去7天内发布了30条广告“
有人可以帮助我,我可以在查询中添加什么,以便计数仍显示正确的广告数量(在我的情况下为20个广告),即使广告已被删除..
谢谢 干杯
答案 0 :(得分:6)
不是使用DELETE ... WHERE ...
语句删除行,而是添加deleted
列并使用UPDATE
语句:
UPDATE ... SET deleted = 1 WHERE ...
然后您的计数功能无需修改即可使用。
当然,您现在必须修复所有其余代码,以便不显示已删除的广告。您可以通过向所有其他查询添加WHERE NOT deleted
来执行此操作。您还可以创建一个仅显示未删除广告的视图,并更新您的代码以查询此视图而不是原始表。
答案 1 :(得分:4)
不是从系统中删除广告,而是添加“已删除”标记,或将其移至已删除的表格。这样你永远不会丢失它们的记录。
答案 2 :(得分:2)
您无法添加到查询中以查找已删除的数据。您需要不来删除数据,但是要为用户要删除的记录添加标记指示它已从显示中删除。
除了允许对记录进行计数外,还具有附加优势,如果他愿意,可以允许用户恢复该广告。