我正在开发自由职业者站点,并且在此站点中,用户(项目所有者和专家)可以为每个站点留下反馈。我试图找到等待离开的反馈数量。复杂的SQL查询问题
该查询返回项目的这些在过去30天内没有反馈,用户ID = 3,并有适当的状态代码watting反馈计数:
SELECT COUNT(*)
FROM projects
WHERE projects.status IN (5, 10) AND projects.status_created >= DATE_SUB('2010-12-17 21:24:51', INTERVAL 30 DAY)
AND NOT EXISTS(
SELECT * FROM
feedbacks WHERE feedbacks WHERE projects.id = feedbacks.project_id AND feedbacks.from_id = '3'
)
此查询的作品时,我们只有2个在数据库中的用户否则,例如,如果我们改变用户ID 3到99(用户具有与项目没有关系),查询仍返回1计数,但应该返回0
我的数据库方案:
PROJECTS(id, project_owner_id, project_title, ...)
FEEDBACKS(id, project_id, to_id, from_id, ....)
PROJECT_BIDS(id, project_id, bid_owner_id, accepted, ...) We can use this table for find out which user's bid is accepted then accepted bid owner have right for leave feedback.
我们可以使用project_bids.accepted字段来找出哪些用户与项目有关系。如果被接受为真,那么项目的自由职业者专家就是这个用户。另外projects.project_owner_id是确定关系的另一列。
我该如何解决我的问题?谢谢。
也许一个自由职业者可以帮忙吗? – 2010-12-17 20:44:36
如果您为每个表格提供了样本数据,那么您对表格之间关系的解释将更加清晰,以显示哪些内容无效。 – Gerrat 2010-12-17 21:05:59