2017-01-12 16 views
1

私の以前の質問については、関数については固定されていましたので、私は自分のクエリに固執しています。クエリの日付が正しく機能していません

SELECT * FROM threads WHERE cat_id = :cat_id AND thread_date=(
    SELECT max(thread_date) FROM threads 

データベース内の列が他の列と同じthread_dateを持っている場合、それだけでなく、両方の最初thread_nameをプリントアウトします。

明らかに上記のようにcat_idの両方からthread_nameを印刷したいとします。

Example data: id = 1, cat_id = 15, thread_name = test, thread_date = 15; 
       id = 2, cat_id = 16, thread_name = test2, thread_date = 15; 

結果:

test test 

私は何を期待:

test 
test2 

おかげ

http://image.prntscr.com/image/1c44540d40fa413f8bd073bc481858b9.png

+2

どのようなクエリを実行したいですか?サンプルデータと望ましい結果は、説明と同様に役立ちます。 –

+0

'id = 2'を結果セットに入れたいのであれば、なぜ' cat_id'でフィルタリングしていますか? –

+0

最高のthread_dateのcat_idのthread_nameを印刷する必要があります – user6632515

答えて

0

シフトWHERE句の再の一部サブクエリにcat_idをstricting:

SELECT * 
FROM threads 
WHERE thread_date = (SELECT MAX(thread_date) FROM threads WHERE cat_id = :cat_id) 

サブクエリは、今入力cat_idの最大thread_dateを識別し、外側のクエリは、この最大thread_dateを共有するすべてのレコードを返します。

+0

同じthread_dateを持つ場合は別のcat_idのthread_nameを出力します – user6632515

+0

データに問題がある可能性があります。 –

+0

いいえ私は持っていません。列が同じthread_dateを持つ場合、その列の最初のthread_nameを2回出力しているだけです。 – user6632515

関連する問題