私はフリーランサーサイトを開発しており、このサイトではユーザー(プロジェクトの所有者と専門家)がそれぞれのフィードバックを残すことができます。私は帰るのを待つフィードバックの数を見つけることを試みている。我々は、データベース内の唯一の2のユーザーを持っているとき複雑なSQLクエリ質問
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'
)
このクエリは、作品である:
このクエリは、最後の30日には、フィードバック、ユーザID = 3を持っていないと、適切なステータスコードを持っているプロジェクトのwattingフィードバック数を返します。それ以外の場合は例えば、我々は99に(プロジェクトとは関係を持たないユーザ)のユーザID 3を変更した場合、クエリはまだカウントに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は関係を決定する別の列です。
クエリを修正するにはどうすればよいですか?ありがとうございました。
多分フリーランサーが助けることができますか? –
テーブル間の関係についてのあなたの説明は、各テーブルのサンプルデータを提供して、何が動作していないかを示すならば、より明確になります。 – Gerrat