お世話になっております。
WHERE文に関して、少々分からない事が出てきたため質問させて下さい。
id mail name ・・・・
現在、上記のようなカラムを持つmemberというテーブルがあり、このテーブルにあるメンバー向けにメールマガジンを配信しております。
今回、メールマガジンの配信の停止を求められたのですが、色々なタイプのメールマガジンを配信しており、その1つだけを停止を求められたので配信停止依頼のあった者だけを
no no_id no_mail
といったようなテーブル(no_magazine)を設置し、配信の停止を求めてきた方のidと、mailを、上記テーブルに登録する流れを考えました。
そこで質問です。
配信停止を求めてきた方だけを、no_magazineテーブルに入れ、memberとno_magazineをLEFT JOINして問合わせを考えておりますが、このように、no_magazineにデータがない方だけに配信をしようとした場合、どのようなWHERE文になるのでしょうか?
no_magazineにデータがある方だけに送るのは簡単ですが、データがない方だけに送るケースが判らずに質問させて頂きました。
色々と試行錯誤しているのですが、どれも上手くいかなくて・・・
お忙しいなか恐縮ですが、アドバイスのほど頂戴出来れば幸いです。
宜しくお願い申し上げます。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
NOT EXISTSを使えばよいのでは?
SELECT * FROM member WHERE NOT EXISTS(SELECT * FROM no_magazine WHERE no_magazine.no_id = member.id AND no_magazine.no_mail = member.mail)
このような感じで。
No.2
- 回答日時:
ユーザーテーブルとメールマガジンテーブルを別々に設定し
ユーザー=メールマガジンテーブルで管理すればいいでしょう。
たとえば、ユーザー=鈴木・佐藤・山田がいて、
メールマガジン=趣味、仕事、自己啓発があったときに
趣味は全員、仕事は鈴木・佐藤、自己啓発は佐藤だけ登録している場合
こんな感じ
create table user (uid int,uname varchar(20));
insert into user values(1,'鈴木'),(2,'佐藤'),(3,'山田');
create table mailmagazin (mid int,mname varchar(20));
insert into mailmagazin values(1,'趣味'),(2,'仕事'),(3,'自己啓発');
create table user_mailmagazin (mid int,uid int,unique(mid,uid));
insert into user_mailmagazin values(1,1),(1,2),(1,3),(2,1),(2,2),(3,2);
これを、ユーザーごと、メールマガジンごとに表示するとこう
//ユーザーごと
select u.uid,uname,group_concat(mname)
from user as u
,user_mailmagazin as um
,mailmagazin as m
where u.uid=um.uid and um.mid=m.mid
group by uid;
//メールマガジンごと
select m.mid,mname,group_concat(uname)
from user as u
,user_mailmagazin as um
,mailmagazin as m
where u.uid=um.uid and um.mid=m.mid
group by mid;
あとはたとえば仕事(mid=2)のメールマガジンだけ送るなら
select u.uid,uname
from user as u
,user_mailmagazin as um
where u.uid=um.uid and um.mid=2;
のような検索でuidを抽出して処理すればよいでしょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQL update方法 2 2022/06/22 14:07
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- 運輸業・郵便業 請求書の郵送方法について教えてください 5 2023/03/27 10:43
- 中学校 英語での答え方はこれで正解ですか? (このように実際に聞くかとかは別として、あくまでも文法として) 2 2022/11/19 17:52
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- MySQL 【MySQL】本当に困っています。詳しい方、ご教授よろしくお願いします。 1 2023/06/03 14:18
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
同一のユーザー、同一商品のと...
-
PL/SQLの変数について
-
テーブル名を省略して「h.id」...
-
SQLサーバから、項目の属性(型...
-
クエリ表示と、ADOで抽出したレ...
-
LEFT JOIN と GROUP BY
-
副問合せの書き方について
-
SELECT文で片方のテーブルを優...
-
VIEWの元のテーブルのindexって...
-
select文で特定のIDを抽出しupdate
-
php+MySQLでレコードが何行目か...
-
#1136 - Column count doesn't ...
-
SQLで残高計算
-
MySQLでのバイナリデータ削除方法
-
複数のテーブルの重複データを...
-
SQLにて特定の文字を除いた検索...
-
Access VBAでのIDの自動発番
-
SQL Left Join で重複を排除す...
-
LEFT JOINが2つあるSQL文でAND...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
SQLサーバから、項目の属性(型...
-
VIEWの元のテーブルのindexって...
-
select文のwhere句に配列を入れ...
-
selectした大量データをinsert...
-
センノシド異性体構造式
-
Unionした最後にGROUP BYを追加...
-
insertを高速化させたい
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
sqlで、600行あるテーブルを100...
-
エクセルの関数について教えて...
-
Access パラメータクエリをcsv...
-
URL と行番号の指定
-
複数テーブルのGROUP BY の使い...
-
PL/SQLの変数について
おすすめ情報