2009-05-29 5 views
1

ここでは2つのテーブル、投稿とコメント、1対多の関係、1つのコメントテーブルにフィールドコールcomment_dateがあります。今すべてのレコードを選択すると、結合されたテーブルの特定の条件を満たしていない

私は次のように期待される結果を得るのに苦労しています:

すべての記事は、特定の日付の後にコメントを持っていないが、私は、SQL文でこれを行ってことができますか?

テスト済み

答えて

4
SELECT * 
FROM posts p 
WHERE NOT EXISTS(
    SELECT 1 
    FROM comments c 
    WHERE c.comment_date >= 'deadline' 
    AND p.post_id = c.post_id 
) 
+0

素晴らしい、テスト済みです。キーワード "NOT EXISTS"、ありがとう。 –

+0

迅速な答えをありがとう。 –

1
SELECT * 
FROM posts 
WHERE post_id NOT IN 
     (
     SELECT comment_post 
     FROM comments 
     WHERE comment_date >= @deadline 
     ) 
+0

は、最初の1、おかげで良いとして働いていました。これは、外部キーを指定する必要がない巧妙です。コメントにpost_idを使用するので、comment_postをpost_idに置き換えると完璧な答えになります。 –

+0

NOT INは実際にはMySQLに存在しないように最適化されています – Quassnoi

関連する問題