2017-01-30 8 views
0

私は、member_idという自動IDを持つメンバー名と、有効期限を格納する有料テーブルと、2つのテーブル間の結合のmember_idを含むデータメンバーの次の2つのテーブルを持っています。MySQL期限切れの有償レコードの検索

私はNOT EXIST句を使用して2017年から有料のレコードを選択して、今年を更新していないすべてのメンバーを返すクエリを実行しようとしています。このクエリは結果を返しません。

SELECT * 
    FROM members 
    , paid 
WHERE members.member_id = paid.member_id 
    AND paid.year = '2016-12-31' 
    AND NOT EXISTS (SELECT members.member_id 
         FROM members 
         , paid 
        WHERE members.member_id = paid.member_id 
         AND paid.year = '2017-12-31') 

ここで間違っていることはわかりません。

+0

私は、JOINsの熟知が配当を支払うと考えています。 – Strawberry

答えて

1
SELECT * 
    FROM members 
    JOIN paid 
    ON members.member_id = paid.member_id 
    WHERE paid.year = '2016-12-31' 
    AND members.member_id NOT IN (SELECT members.member_id 
         FROM members 
         JOIN paid 
         ON members.member_id = paid.member_id 
         WHERE paid.year = '2017-12-31') 
+0

私はこれと同じ結果を得ています。クエリで何も返されません。 – kc3ase

+0

あなたは 'paid.year'についてもっと詳しく説明できます –

+0

時刻のタイムスタンプです。したがって、各メンバ名は、メンバテーブルに参加しており、それは有料テーブルのメンバIDです。毎年、支払ったメンバーは新しい日付印のレコードを取得します。私たちは昨年から更新していない人を探しています。これは、有料のテーブルには2016-12-31の有効期限があり、すでに2017-12-31の新年を支払ったメンバーではありません。 – kc3ase

関連する問題