教えて!gooグレードポイントがdポイントに!

現在
テーブル T_2011,T_2010,T_2009
の3つのテーブルがあり、それぞれには同じ形式の顧客情報が入っています。

例えば
顧客id,氏名,住所

この時、
T_2011には2011年に購入履歴のある方
T_2010には2010年に購入履歴のある方
T_2009には2009年に購入履歴のある方

のデータが入っております。

そこで、毎年購入がある方を抽出したいのですが
どうすれば可能でしょうか?

もちろん1つのテーブルに集めて、重複チェックをすれば
出るのですが、今後テーブル数が増えたり、2011年と2090年に
購入のある方など様々な形での抽出をする可能性があるため
クエリなどを利用し一発で抽出する方法があればと考えて
おります。

もちろん検索等を行い似たような例はあったのですが
ちょっと理解ができなかったためご質問させて頂きました。

宜しくお願いいたします。

重複チェックのキーは、顧客IDとなります。

環境は、windowsXP、access2000となっております。

教えて!goo グレード

A 回答 (1件)

単に、


select a.顧客id,a.氏名,a.住所 from T_2011 a,T_2010 b,T_2009 c
where a.顧客id = b.顧客id and a.顧客id = c.顧客id
で出てくると思いますが。

年によって、氏名(結婚・離婚による)や住所(転居・行政の地番変更による)が変わることがあるので
最新のテーブルのデータを参照しましょう。

2010年、2009年に購入していて20011年に購入していない顧客は?
など購入していないという条件をつけるのは少し難しいと思われるかもしれませんが、
以下のようなSQLです。
select b.顧客id,b.氏名,b.住所 from T_2010 b,T_2009 c
where b.顧客id = c.顧客id and b.顧客id not in (select a.顧客id from T_2011 a)

※本当は、年毎にばらばらに持つのはのぞましくないんですが。
・・・例えば、2009~2011のいづれかの年に購入した客で大阪府に住んでいる人を出したいときとかに
急に手間が増えます。
    • good
    • 1
この回答へのお礼

ありがとうございました。
すごく便利です。

ただ、SQLビューの存在をしらなかったため若干マヨってしまいました。
SQLを覚えればここで色々できるのですね。
今まではクエリの条件に簡単な関数?を入れていただけでしたので。
ありがとうございました。

また、データベースのに関してのアドバイスも頂き有難うございます。

本当にありがとうございました。

お礼日時:2012/02/10 17:26

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

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


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング