mysql:5593
From: Hidehiko TAKAHASHI <Hidehiko TAKAHASHI <Hidehiko.Takahashi@xxxxxxxxxx>>
Date: Mon, 3 Jun 2002 19:52:45 +0900
Subject: [mysql 05593] Re: 差集合について
Koshibaさん、madaraさん、otsukaさん、お返事ありがとうございました。 Accessはつかったことあるのですが、SQLは初めてなので四苦八苦しております。 教えていただいた方法でもうちょっとのところまでできました! A left join B on をつかってAにあるものすべてと、Bを比べて、そこからBの NULL部分を抜き出すという方法ですよね。それで完成しそうなのですが、こまった 問題があります。 Aはマスターテーブルだとおもってください。 Table A Food ------- Apple Banana Orange ------- Table B User Food ------------ A | Apple A | Orange B | Banana B | Orange ------------ というテーブルがあるとします。 テーブルBには人と、その人が食べたものが入っているとします。 そこで、それぞれのユーザーが食べていないものを表示させたいわけなのですが、 もしユーザーがAしかいない場合、Table B User Food ------------ A | Apple A | Orange ------------ となりまして、教えていただいたLEFT JOINによってNULLを導き出せばBananaが算 出できるかとおもいます。ところが、ユーザーはたくさんいるので、まずTable BのユーザーからAを算出してから、そこからLEFT JOINをしたいのです。ただ、 MySQLでは()をネストできないようなので、最後にWHERE User=Aとやっても、正 しい値が帰りません。上の場合はEmpty setといわれてしまいます。(ユーザーAと ユーザーBを含めると、すべての食べ物を食べているので) 先にTableBのユーザーをAに絞ってから、LEFT JOINすることってできるのでしょう か? 長くなってしまってすいません。 -- Hidehiko Takahashi ソニーエリクソンモバイルコミュニケーションズ(株)
5589 2002-06-03 14:41 ["Hidehiko Takahashi"] 差集合について 5590 2002-06-03 16:17 ┣["Koji Koshiba" <koss] 5591 2002-06-03 16:34 ┣[madara <madara@xxxxx] 5592 2002-06-03 18:48 ┗["otsuka" <otsuka03@x] -> 5593 2002-06-03 19:52 ┗[Hidehiko TAKAHASHI <] 5594 2002-06-03 22:55 ┣["otsuka" <otsuka03@x] 5595 2002-06-04 06:16 ┗[とみたまさひろ <tomm] 5596 2002-06-04 10:34 ┣[Hidehiko TAKAHASHI <] 5598 2002-06-04 11:47 ┃┣[Tomoyuki Ishino <ish] 5599 2002-06-04 13:36 ┃┃┣[Hidehiko TAKAHASHI <] 5601 2002-06-04 22:54 ┃┃┗[とみたまさひろ <tomm] 5600 2002-06-04 22:52 ┃┗[とみたまさひろ <tomm] 5597 2002-06-04 10:40 ┗[madara <madara@xxxxx]