我正在開發自由職業者站點,並且在此站點中,用戶(項目所有者和專家)可以爲每個站點留下反饋。我試圖找到等待離開的反饋數量。複雜的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