0
に対してチェックする行のサブセットを使用して私はこのようなテーブルに何か持っている:私はfield_01に、最新の応答が「はい」である誰のためのUIDとresponseDatesを取得したいと思いのMySQL:where句
----------------------------------------
|uID|responseDate|field_01|field_02|etc|
+---+------------+--------+--------+---+
| 1 | 2011-12-02 | yes | no | |
| 2 | 2011-11-25 | no | yes | |
| 1 | 2012-01-02 | no | yes | |
| 2 | 2012-12-01 | no | no | |
| 3 | 2010-01-02 | yes | no | |
+---+------------+--------+--------+---+
を - 私のクエリは返されるはずです:
私は内部結合を使用していますが、間違っています。ここに私のクエリです:これは返す何
SELECT f.uID, f.responseDate
FROM form_05 as f
INNER JOIN (
SELECT uID, max(responseDate) AS latest_date
FROM form_05
WHERE field_01 = 'yes'
GROUP BY uID) dmax
ON dmax.uID = f.uID and dmax.latest_date = f.responseDate
ORDER BY f.uID ASC;
、しかし、field_01がイエスである各UID、すなわち:
------------------
|uID|responseDate|
+---+------------+
| 1 | 2011-12-02 |
| 3 | 2010-01-02 |
+---+------------+
の最新のエントリです。しかし、私はそれを望んでいません。私は各uIDの最新のエントリだけがテストに合格するようにしたいと思います。どのようにしてクエリを再構成できますか?どんな指針も大変ありがとうございます。
!私は今、私の元の試みとの違いを理解しようとするためにそれを解析しています。再度、感謝します! – yycroman
したがって、where節をjoinの外に移動することは、私が見つけることができる唯一の違いです。それは何でしたか? – yycroman
正直言って...私はあなたのコードを見ていない:)しかし、明らかにあなたは左の参加を使用していない、私はそれがこのような状況で必須だと思う。今私はあなたのコードを見て、私はあなたが本当に本当に近くにいることに気付きました! –