2016-06-22 10 views
0

に比類のない列どこに基づいて、第3のテーブル内のレコードを見つけることが、できませんでした: 私は以下のようなレコードを取得しようとしています二つのテーブル

SELECT * 
    FROM D 
    WHERE D.C IN (
     SELECT A.* 
     FROM A 
     LEFT JOIN B ON (A.C = B.C) 
     WHERE B.C IS NULL) 

は基本的に-一致しない あるものは何でも手に入れたいです比較A.Column & B.ColumnDA & Bの結果に基づいて選択します。

これは、2つのテーブルに期限切れのユーザーおよびログに基づいメーラー&更新を更新通知を送信するために使用されるPHPのサンプルコードです:実際のアプリケーションでのコードサンプルを表示する

編集有効期限が切れているユーザー:

 SELECT * FROM expiring_users WHERE expiring_users.id IN(
      SELECT mailer_log.* 
      FROM mailer_log 
      LEFT JOIN renewals_log ON (mailer_log.id = renewals_log.id) 
      WHERE renewals_log.id IS NULL) 

状況を憂慮して、このheplsをご利用ください。

+0

「D.C」にマッチさせたい 'A'または' B'の列は何ですか? – arilia

+0

私はあなたの質問を理解するために役立ついくつかのサンプルデータと期待される結果を投稿するべきだと思います。 – Blank

+0

@All、これは私が選択を行う私のコードの一部です: '( SELECT mailer_log、IN expiring_users.id * mailer_log 左からは(mailer_log.id = renewals_log.id)ON renewals_logを登録しようexpiring_users SELECT * FROM WHERE renewals_log.id IS NULL) ' – sitedevcode

答えて

0

これは機能しています。このような状況で他の人のために、私は以下のコードを使用:

SELECT * FROM expiring_users 
WHERE expiring_users.id IN(
    SELECT mailer_log.id 
    FROM mailer_log 
    LEFT JOIN renewals_log ON (mailer_log.id = renewals_log.id) 
    WHERE renewals_log.id IS NULL) 

それはmailer_logrenewals_log-一致していないエントリに基づいてexpiring_usersテーブルからすべてのレコードを取得します。

通知メーラーシステムが、更新中のレコードの更新に失敗し、既存のユーザーテーブルに基づいてユーザーが期限切れになっていないかどうかを確認するために使用されます。

関連する問題