mysql:5595
From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Tue, 4 Jun 2002 06:16:12 +0900
Subject: [mysql 05595] Re: 差集合について
とみたです。 On Mon, 3 Jun 2002 19:52:45 +0900 Hidehiko TAKAHASHI <Hidehiko.Takahashi@xxxxxxxxxx> wrote: 〜〜 > となりまして、教えていただいたLEFT JOINによってNULLを導き出せばBananaが算 > 出できるかとおもいます。ところが、ユーザーはたくさんいるので、まずTable > BのユーザーからAを算出してから、そこからLEFT JOINをしたいのです。ただ、 > MySQLでは()をネストできないようなので、最後にWHERE User=Aとやっても、正 > しい値が帰りません。上の場合はEmpty setといわれてしまいます。(ユーザーAと > ユーザーBを含めると、すべての食べ物を食べているので) SQL が2文になりますが、こんなんでどうでしょう。 create temporary table c select distinct user, a.food from a,b; select c.user,c.food from c left join b using (user,food) where b.user is null; はじめにユーザ名とすべての食べ物の組み合わせのリストを作って、それと実 際に食べたものを比較して、食べてないものだけを出力してます。 # ユーザ数や食べ物の数が多いと、テーブル c が大きくなりすぎて、実用に # 耐えられないかもしれませんが… -- とみたまさひろ <tommy@xxxxxxxxxx> 日本MySQLユーザ会 http://www.mysql.gr.jp
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]