データベース論

午前と午後の2回.とはいえ,資料は一回分しかないので,前回の関係代数の復習.
関係代数は,去年の課題が,かなり難しい.例えば,

販売している店舗が一つだけであったような製品の製品コードの一覧

複数の店舗で販売しているのは含まれてはいけないとのこと.これを書くのは容易ではない.
答えとしては,「販売している店舗の一覧と製品コードの一覧を結合した表から二つ以上の店舗で販売されている製品コードの一覧」の差をとればよい.
問題はこの二つ以上で販売されているというところ.これをどうするかだが,答えを見て感心した.販売している店舗の一覧表を製品コードで自己結合し,店舗名が異なるものを取り出すのである.つまり,店舗名が異なる=2カ所以上で販売されている,ということになる.これは,知っていないとできませんね.
午後は,SQLのお話.count(distinct 列名)というのは本当に可能なのだろうか?postgreSQLで試したが,うまくいった.
anyやallといった文を使用した経験がないが,postgreSQLだと普通に使える.ストアードプロシージャに頼らなくても,SQLでかなりのことができるみたい.