mysql:11667
From: Hisamitsu Issei <Hisamitsu Issei <ds1i-hsmt@xxxxxxxxxx>>
Date: Sun, 3 Jul 2005 16:14:48 +0900
Subject: [mysql 11667] 同じテーブルに2通りの結合をしている場合の検索
はじめまして久光と申します これまでファイルメーカーProのWebサーバー機能で遊ん でいたのですが、 レンタルサーバー上で動かしてみたくなって、先月からPHP +MySQLの勉強を 始めました。これまでは見よう見まねでなんとかなってたんですが、複 数の テーブルが関係する部分を作るところで行き詰まってしまいました。 MySQL (4.0.24) PHP(4.3.10)です。 テーブル構成は 商品情報を記録しているproduct 会社名を記録しているcorporation テーブル名:product --------------------------- id name maker_id --------------------------- 1 パワー洗剤A 1 2 ウォッシュB 3 3 洗剤リキッド 1 4 液体洗剤Z 2 --------------------------- テーブル名:corporation ---------------- id name ---------------- 1 久光商事 2 日本産業 3 技術東京 4 神奈川物産 ---------------- 商品名の他にもメーカー名を使った検索をするときには SELECT product.*, corporation.name FROM `product` LEFT JOIN `corporation` ON product.maker_id = corporation.id WHERE corporation.name = '久光商事' とすれば久光商事が製造している「パワー洗剤A」と「洗剤リキッド」 が抽 出できるのはわかります。ここまではいいのですが、ここに販売会社の 情報 も入れようと考えています。1つの商品について複数の販売会社が存在 する ので、 テーブル名:saler -------------- p_id c_id -------------- 1 1 1 4 2 1 3 2 3 4 -------------- というテーブルを作って商品テーブルと会社テーブルをつなぐことにし まし た。販売会社名を使った検索なら SELECT product.*, saler.c_id, corporation.name FROM (`product` LEFT JOIN `saler` ON product.id = saler.p_id) LEFT JOIN corporation ON saler.c_id = corporation.id WHERE corporation.name = "久光商事" GROUP BY product.id とすれば久光商事が販売している「パワー洗剤A」と「ウォッシュB」 を抽 出できると考えてます。 ところでやっと本題なのですが、上記2パターンを組み合わせた場 合、つ まり製造会社が「久光商事」で販売会社が「神奈川物産」である「洗剤 リキッ ド」を抽出するというような組み合わせのときにどんなSQL文を 作ればいい のかというところで行き詰まってしまいました。どちらも corporation.name なので製造と販売の区別をつけられないのです。製造と販売の両方を やって いる会社があるので、製造会社テーブルと販売会社テーブルの2テーブ ルを 作るのは管理が面倒になりそうなので避けたいと思っています。 こんな場合はどうやるのがいいのでしょうか? よろしくお願いいた しま す。 ================================= == HISAMITSU ISSEI == == DS1I-HSMT@xxxxxxxxxx == http://www.ne.jp/asahi/pro/his/ =================================
-> 11667 2005-07-03 16:14 [Hisamitsu Issei <ds1] 同じテーブルに2通りの結合をしている場合の検索 11669 2005-07-03 17:06 ┗[とみたまさひろ <tomm] 11672 2005-07-03 17:50 ┗[Hisamitsu Issei <ds1]