- ベストアンサー
異なる2つのテーブルからIDを抜き出し併記したい
- 地域別職業別電話帳を作るために、異なる2つのテーブルからIDを抜き出して併記したい場合、join関数を使うことができます。しかし、今回の場合は、キーとなる同じデータがないため、結合ができません。
- 例えば、千代田区の職業別一覧を表示するには、以下のクエリを使用します:SELECT * FROM `01city` WHERE a4_city_id = 13101。
- また、東京のラーメン屋だけを表示するには、以下のクエリを使用します:SELECT * FROM `03works` WHERE c1 = 104。しかし、千代田区のラーメン屋を表示する場合は、2つのテーブルのID(a4_city_id、c1)を結合して表示することはできません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
方針によってやり方は2つ (1)千代田区にラーメン屋があるかどうかわからないがとりあえず「ラ」を表示させる (2)千代田区にラーメン屋があることを確認して「ラ」を表示させる (1)は単純なはなし 市町村テーブルから千代田区を検索した後、職業テーブルを羅列する (2)はちょっと面倒ですが 市町村テーブルから千代田区を検索し、13101を会社名テーブルから検索し induidの羅列を得て、そこから職業テーブルの職業名を得る select distinct c4_aiu_id,c3_aiu,cityid from 職業テーブル as w inner join 会社名テーブル as c on c1=induid inner join 市町村テーブル as a on a1=cityid and a5_city_name='千代田区'; で千代田区のアイウを得て、そこから絞り込むように select distinct c1,c2_work from 職業テーブル as w inner join 会社名テーブル as c on c1=induid and cityid='上記で得た13101' where w.c4_aiu_id='上記で得たラのid'; で千代田区のラーメン屋を得る はっきりいえば、質問のカラム名の何が何をさしているか想像しているだけなので あてずっぽうです、きちんとした回答を得たいなら仕様を提示すべきです
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
よく意味がわからないんだけど・・・ これって市町村テーブルも職業テーブルも会社名テーブルに関連づいている のではないの? であれば単に会社名テーブルにある induid(職業テーブルのid?),cityid(市町村テーブルのid?)を引っ張れば いいだけじゃないのでしょうか? select * from 会社名テーブル where cityid=13101 and induid=104; みたいな感じ?
補足
>select * from 会社名テーブル where cityid=13101 and induid=104; はい。既にそのSQLは設定済みで、このSQL結果は下記で問題なく表示されます。 http://127.0.0.1/ccs/result/13101/104/ 私が作りたいのは 港区をクリック → ラ行をクリック → ラーメン店をクリック →結果http://127.0.0.1/ccs/result/13101/104/のページが表示される仕組みであり、今回の質問は、 港区をクリック → ラ行をクリック → ラーメン店をクリック を作るにはどうすればいいかという質問です。 具体的には <a href="http://127.0.0.1/ccs/result/変数A/変数B">変数AA変数BB</a>というベースのPHPファイルがあり、 変数A およびAAは、テーブル01city から拾ってきて、それぞれ 13101 千代田区を代入します。 変数B およびBBは、テーブル03works から拾ってきて、それぞれ 104 ラーメン屋を代入します。 これにより、プルダウンでAで「千代田区」、プルダウンBで「ラーメン屋」を同時に選ぶと <a href=http://127.0.0.1/ccs/result/13101/104>千代田区ラーメン店</a> というURLが作成され、これをクリックすると、 会社名テーブルの中の13101と104を拾ってきた、「千代田区ラーメン店リストが表示されるようにしたいと考えています。 このように、ひとつのURLに、拾ってくるテーブルが異なる値を代入したい場合にはどうすればいいでしょうかというのが質問の趣旨となります。 分かりにくくて申し訳ございませんが、よろしくお願いいたします。
お礼
お忙しい中ご回答頂きまして大変ありがとうございました。 ベストアンサーとさせていただきます。 助かりました。
補足
有難うございました。 ご指導いただきました例を参考に、 SELECT DISTINCT c1, c2_work FROM 03works AS w INNER JOIN tokyo AS c ON c1 = induid AND cityid = '13101' WHERE w.c4_aiu_id = '38' で 千代田区のラ行を抽出出来ました。 ここから千代田区のラーメン屋をクリックで抽出出来そうです。 本当に助かりました。 有難うございました。