2012-03-16 10 views
0

私はあなたがスタッフにレビューを追加することができ、データベースを持っている中で検討されていないすべてのスタッフを取得します。 私は、先月にレビューされていないすべてのスタッフを取得する声明を希望します。のMySQL:先月

これまでのところ、私が持っている:私は素晴らしいことだwhere句、のようなもので、最大(日)列を使用することができれば

SELECT id, max(date), staff_id, reviewer_id FROM `review` WHERE date < DATE_SUB(NOW(), INTERVAL 1 MONTH) GROUP BY staff 

これは、しかし、私は反対確認したい日付をカット:

私が望む結果を得るでしょう
SELECT id, max(date) as testdate, staff_id, reviewer_id FROM `review` WHERE testdate < DATE_SUB(NOW(), INTERVAL 1 MONTH) GROUP BY staff 

が、これはSQL

に任意のアイデアを行うことができないのですか?あなたが持って使用することができるはず

+1

は、なぜあなたはときMAX(日付)reqireん取得しますあなたが求めているのは、先月に改造されていないすべてのスタッフです。その 'のIDのスタッフからIDを選択してください(どこから日付> DATE_SUB(NOW()、インターバル1月))' –

+0

ああ、完璧に感謝したレビューからstaff_idを選択!私はそれをチェックするために最も最近のものをつかむために最大(日付)を使用しようと間違っていると思っていたと思います。 – Craig

答えて

1

select id from staff where 
id not in 
(select staff_id from review where date >DATE_SUB(NOW(), INTERVAL 1 MONTH)) 

このクエリを試す - 更新は、レビュー日

select a.id from staff a where 
a.id not in 
(select b.staff_id from review b where b.date >DATE_SUB(NOW(), INTERVAL 1 MONTH)) 
inner join 
(select max(r.reviewDate), r.staff_id from review r group by r.staff_id) test 
on test.staff_id=a.id 
+0

これは正常に動作します。 – Craig

+0

レビューテーブルにエントリがないスタッフが表示されているため、レビュー日がありません –

+0

これは、一度もレビューをしていないスタッフと、最後に1人も持っていないスタッフを返します月。彼らが持っていれば最後のレビューの日付が欲しい。だから私はそれがどれほど遅れているかを示すためにこれを使うことができます。 – Craig

0

SELECT id, max(date) as testdate, staff_id, reviewer_id FROM `review` GROUP BY staff HAVING testdate < DATE_SUB(NOW(), INTERVAL 1 MONTH) 

をしかし、あなたはまた、はレビューがありませんでしているすべてのスタッフは表示されません。これらの人を取得するには、staffテーブルに参加する必要があります。

+0

これは機能しませんでした。空の結果セットを返しました。 – Craig

0

あなたはこのように試すことができます:

SELECT id, max(date), staff_id, reviewer_id 
    FROM `reviews` 
    GROUP BY staff 
    HAVING max(date) < DATE_SUB(NOW() , INTERVAL 1 
    MONTH) 

通常、我々は、集計関数の比較は、where句では許可されていないので、代わりにwhere句のことで、グループ内の句を持つ使用する必要があります。

+0

これは機能しませんでした。空の結果セットを返しました。 – Craig

0

私は、これはそれを行うべきだと思う:

select id,staff_id,max(date),reviewer_id from review where date < (NOW() - INTERVAL 1 MONTH) group by staff_id; 
+0

これはうまくいきましたが、@realcalsはレビューしたことがない人をピックアップしないと述べています。 – Craig