アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP4.xx と SQLite2 初心者です。

会員向けのメルマガ配信プログラムを構築しています。

配信リストのテーブルと
配信停止リストのテーブルの「メールアドレス」のカラムにあるデータを照らし合わせて一致する情報を抽出したいのですがどうしたら言いかわかりません…

具体的には・・・

ある会員が配信停止を希望し、配信停止フォームから自分のメールアドレスの送信します。
すると配信停止テーブルにメールアドレスが登録される構造になっています。

送信する際は毎回CSVファイルを読み込んで配信先リストを作成して、数百人に送信するのですが、その際に読み込んだ数百件のデータのメールアドレスの部分を配信停止テーブルに登録されているメールアドレスのデータを照らし合わせて、一致した行を読み込まないようにしたいのです。
(そうしないとまたうっかり送ってしまう可能性があるので。)

どうぞよろしくお願いします。

A 回答 (1件)

SQLite2について詳しくなく、SQLの実装状況も十分に把握していません。

また、CSVファイルとSQLで操作したいというテーブルの関連、対応付けができるキーは「メールアドレス」だけなのかといったことも不明ですが、差分を求めるSQL例でいいなら、SQLite3では実装済のSQLを、いくつか提示しておきます。


(1)existsを使った例
select * from "配信リスト" as x
where not exists (select 1 from "配信停止リスト"
where x."メールアドレス"="メールアドレス")
;

(2)inでサブクエリを使った例
select * from "配信リスト"
where "メールアドレス" not in(select "メールアドレス" from "配信停止リスト")
;

(3)outer joinを使った例
select * from "配信リスト" as x
left join "配信停止リスト" as y
on x."メールアドレス"=y."メールアドレス"
where y."メールアドレス" is null
;

(4)exceptを使った例
select "メールアドレス" from "配信リスト"
except
select "メールアドレス" from "配信停止リスト"
;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す