• 締切済み

複数の検索結果で別テーブルの値を取得する

お世話になっております。質問タイトルと内容がマッチしていないかもしれません。(何て書けばいいかわかりませんでした。。。) ある条件をもとに、別データベースから取得した $t_code(例:AAT1)があるとします。 下記、データベース名:DomesticCityの$t_codeで 1)TYO,NRT,HNDの3件あった場合→"東京"と表示 2)TYO,NRTの2件あった場合→"成田"と表示 3)TYO,HNDの2件あった場合→"羽田"と表示 4)OSA,KIX,ITMの3件あった場合→"大阪"と表示 5)OSA,KIXの2件あった場合→"関西"と表示 したいのですが、どうしたらいいのでしょうか? 空港名なのですが、TYO(東京)NRT(成田)HND(羽田)は 1つの仲間ですが、明確にTYOとNRTしかない場合、 成田と羽田を区別したいのです。 CTS(札幌)KMQ(小松)など、空港が1つしかない都市は そのまま表示します。 データベース名:DomesticCityは他社からのデータですので 構造など変更することは出来ませんが、 データベース名:frmCityCodeList_JP はうちのデータなので 変更可能です。 データベース名:DomesticCity フィールド:t_code , dome データ例: AAT1 , TYO AAT1 , NRT AAT1 , HND AAT1 , CTS AAT1 , KMQ AAT1 , OSA AAT1 , KIX AAT1 , ITM (わかりやすく1行あけます) COT , TYO COT , NRT COT , HND (わかりやすく1行あけます) QFT3 , TYO QFT3 , NRT (わかりやすく1行あけます) LHT2 , TYO LHT2 , HND データベース名:frmCityCodeList_JP フィールド:code , code2 , code_jp データ例: NRT , TYO , 成田空港 HND , TYO , 羽田空港 KIX , OSA , 関西空港 ITM , OSA , 伊丹空港 CTS , null , 千歳空港 KMQ , null , 小松空港 よろしくお願いします。

  • MySQL
  • 回答数3
  • ありがとう数3

みんなの回答

  • mooboogie
  • ベストアンサー率68% (28/41)
回答No.3

#1さんの言うことはまったくその通りで、バージョン毎に別のアプリケーションの如くです。 しかしながら、無料の問題集として「教えてgoo」を使って勉強している私は、関係なく、回答してしまうのでした^^; それはさておき。。。 下記SQLで出ますが、もう少し良い方法がある気が。 select t_code, if ( group_concat(dome)like '%TYO%' and group_concat(dome)like '%NRT%' and group_concat(dome)like '%HND%' ,'東京', if ( group_concat(dome)like '%TYO%' and group_concat(dome)like '%NRT%' ,'成田', if ( group_concat(dome)like '%TYO%' and group_concat(dome)like '%HND%' ,'羽田', if ( group_concat(dome)like '%OSA%' and group_concat(dome)like '%KIX%' and group_concat(dome)like '%ITM%' ,'大阪', if ( group_concat(dome)like '%OSA%' and group_concat(dome)like '%KIX%' ,'関西','' ))))) from DomesticCity group by t_code; 当方環境 Mysql5.0です。

takotan2
質問者

お礼

mooboogieさん ご返答ありがとうございました。 自分なりに考え、またmooboogieさんのコードにgroup byというのがあったので、使ってみたらなんとかなりそうでした。。。 本当にありがとうございました。

回答No.2

失礼。 LHT2 , 羽田 でしたね。

回答No.1

MySQLでの実現方法を質問する場合は、必ずバージョンを明記してください。具体的なSQL例を提示しても、あなたの環境では動かない可能性があります。 >どうしたらいいのでしょうか? あなたの考えた方法は、まったくないのでしょうか? ここは仕様を提示して、何かを作ってもらう場所ではありません。 以下のような形で、表示したいということでしょうか? AAT1 , 東京 AAT1 , 札幌 AAT1 , 小松 AAT1 , 大阪 COT , 東京 QFT3 , 成田 LHT2 , 成田

takotan2
質問者

お礼

chukenkenkouさん レスありがとうございました。自分で考えるうちにごちゃごちゃになりコードを記載しませんでした。。。すみませんでした。 またバージョンは他の人に設定してもらったので、(情けないのですが)わかりません。。今聞けないので今後の為に聞いておきます。 下記でなんとかなりそうです。でも他にスマートな方法があれば、ご教授下さい。 frmCityCodeList_JP をかえる code1 , code2 , code3 , code4 , code_jp OSA , KIX , ITM , UKB , 大阪 TYO , HND , NRT , null , 東京 CTS , null , null , null , 札幌 大阪を例にすると最大4件あるので $code="OSA"; $code2="KIX"; $code3="ITM"; $code4="UKB"; か、東京の場合 $code="TYO"; $code2="HND"; $code3="NRT"; $code4=""; か、その他1つしかない場合 code="CTS"; $code2=""; $code3=""; $code4=""; $sql_d = "select * from DomesticCity where t_code = '$t_code' and(dome = '$code' or dome = '$code2' or dome = '$code3' or dome = '$code4')"; $result_d = mysql_query($sql_d); //1つしかない場合 if (mysql_num_rows($result_d) == 1) { while($rec_d = mysql_fetch_array( $result_d, MYSQL_ASSOC )) { foreach ($rec_d as $k=>$v) { $rec_d[$k] = mb_convert_encoding($v,'UTF-8','EUC-JP'); } echo $rec_d[dome] ; $dome = $rec_d[dome] ;→1なのでfrmCityCodeList_JPからcode_jpの値をとる } } //2つある場合 if (mysql_num_rows($result_d) == 2) { $sql_d2 = "select * from DomesticCity where t_code = '$t_code' and(dome = '$code' or dome = '$code2' or dome = '$code3' or dome = '$code4') group by 't_code'"; $result_d2 = mysql_query($sql_d2); while($rec_d2 = mysql_fetch_array( $result_d2, MYSQL_ASSOC )) { foreach ($rec_d2 as $k=>$v) { $rec_d2[$k] = mb_convert_encoding($v,'UTF-8','EUC-JP'); } echo $rec_d2[dome] ; $dome = $rec_d2[dome] ;→NRT,TYOならNRTが、KIX,OSAならKIXが出るので別テーブルから空港名をとる } } //3つある場合 if (mysql_num_rows($result_d) == 3) { 以下省略 //4つある場合 if (mysql_num_rows($result_d) == 4) { 以下省略

関連するQ&A

  • JALのロス・日本便、成田直か関空経由か

    ロス在住で来年7月日本へ行きたく JAL のサイトで LAX-NRT/HND 便の一番安いのを探していたところ、行きは AA コードシェアの成田行きが安いのですが、帰りの便では直行便より HND-KIX(ITM) 乗り換えて KIX-LAX のが安いのです。 旅行のスケジュールでは最後に東京へ戻らなくて大阪からロスに帰ることもできるのですが、事前に連絡すれば国内線の HND-KIX(ITM) を乗らずこれをスキップすることはできるのですか。それともチケットに割り当てられた便は必ず乗らないといけないのでしょうか。

  • 空港の英字3字のコード

    先日飛行機で帰省してきました。 そこでふと疑問に思ったのですが、空港には英字3字で空港コードが割り当てられていますよね?よく荷物に付けられる札に書いてあるあれです。 関西国際空港…KIX 羽田空港…HND 新千歳空港…CTS 旭川空港…ASJ JFケネディ空港…JFK という具合ですが、これは全世界の空港に、重複が無いように割り当てられているのですか? 世界にはすごいたくさんの空港があると思うのですが… とっても気になります。

  • ラスベガス旅行の航空会社(ANA・ユナイテッド)

    初海外旅行に行こうと考えていまして、今ツアーや航空券を探しています。 10時間近くも飛行機に乗る事がないので、機内でも思いっきり楽しんでやろう! と思っていますが、予算があまりないので、安い航空券を見ています・・・。 楽天トラベルで楽パックの検索をし、2つの候補を見つけたのですが、 どちらがオススメかご意見をいただきたいです。 また、乗り継ぎ時間短い気がするのですが、海外でもこんなものでしょうか? ポイントとしては、 ・なるべく安くあげたい((1)と(2)の差額は16000円くらいで、(2)の方が高い) ・なるべく現地での時間を多く設けたい(1つ目のユナイテッド航空優勢?) ・機内食がおいしい(2つ目のANA優勢?) ・機内のパーソナルモニターで映画等観たい(下記の便は全部付いてますでしょうか?) ・初心者でも安心(全部ツアーにするにはお金が足りませんでした・・・) ・飛行時間は長くても短くてもOK ・関西からの交通費(諸税込み)と3泊分のホテル代で、予算は最大15万円 ・お金・所要時間・過ごし方等はコスパ(お金辺りの満足度)重視!  です。 (1)   ※行き※ 13:00・・・伊丹(ITM) ANA NH26 BOEING 777-200 14:10・・・羽田(HND) 乗継 18:25・・・成田(NRT) ユナイテッド航空 UA852 BOEING 747 400 11:30・・・サンフランシスコ(SFO) 乗継 13:10・・・サンフランシスコ(SFO) ユナイテッド航空UA5603 CANADAIR REGIONAL JET 14:45・・・ラスベガス(LAS)   ※帰り※ 11:10・・・ラスベガス(LAS) ユナイテッド航空UA258 AIRBUS A319 12:54・・・サンフランシスコ(SFO) 乗継 13:50・・・サンフランシスコ(SFO) ユナイテッド航空 UA853 BOEING 747 400 17:00・・・成田(NRT) 乗継 20:40・・・羽田(HND) ANA NH147 BOEING 777-200 21:55関空(KIX) (2)   ※行き※ 12:00・・・伊丹(ITM) ANA NH24 BOEING 777-200 13:10・・・羽田(HND) 乗継 17:05・・・成田(NRT) ANA NH6 BOEING 777-300ER 10:50・・・ロサンゼルス(LAX) 乗継 16:15・・・ロサンゼルス(LAX) ANA NH7216 CANADAIR REGIONAL JET 17:29・・・ラスベガス(LAS)    ※帰り※ 11:10・・・ラスベガス(LAS) ANA NH7315 AIRBUS A319(ユナイテッド航空による運航/機材) 12:54・・・サンフランシスコ(SFO) 乗継 13:50・・・サンフランシスコ(SFO) ANA NH7017 BOEING 747 400(ユナイテッド航空による運航/機材) 17:00・・・成田(NRT) 乗継 20:40・・・羽田(HND) ANA NH147 BOEING 777-200 21:55・・・関空(KIX) よろしくお願いします!

  • ロサンゼルスorポートランド空港の乗り継ぎ時間

    いつもこちらのサイトにお世話になっていますm(_ _)m ラスベガスの海外航空券を探している中で、 検索すると下記のパターンが出てきました。 中には、同じ航空会社ではありますが、 乗り継ぎ時間が40分程しかないものもあります。 国内線と国際線をまたぐ乗継だと思うのですが、 40分で乗継ってできるものなのでしょうか? 検索にヒットしたという事は、大丈夫という事なのでしょうか? 遠い国への海外旅行経験がないので、よく分かっておりません・・・ 下記の2パターンで検討しているのですが、 パターン1と2、それぞれが大丈夫かどうか、お教えいただけると有り難いです。 【パターン1】 11:30 ラスベガス(LAS)出発 <デルタ航空DL4606> 12:43 ロサンゼルス(LAX)着 <乗継> 13:20 ロサンゼルス(LAX)出発 <デルタ航空DL283 |BOEING 747 400> 17:05 成田(NRT)着 <乗継> 20:40 羽田(HND)出発 <ANA NH147 |BOEING 777-200> 21:55 関空(KIX)着 【パターン2】 10:00 ラスベガス(LAS)出発 <デルタ航空DL9179 |BOEING 737-700> 12:18 ポートランド(PDX)着 <乗継> 13:35 ポートランド(PDX)出発 <デルタ航空DL643> 16:55 成田(NRT)着 <乗継> 20:40 羽田(HND)出発 <ANA NH147 |BOEING 777-200> ※1と同じ便 21:55 関空(KIX)着 すみませんが、よろしくお願いいたします。

  • 飛行機搭乗前PAで数人が呼ばれる理由は

    すでに50年近く、年に1回程度の割合で、LAX - TYO (NRT/HND) を往復していますが、過去に2度ほど成田または羽田空港の搭乗口で待っている時私の名前で「搭乗口カウンターまで来てくれ」と呼ばれたことがあります。 それ以前は他人が呼ばれると、何かチェックイン情報に不備があるのでそれを修正するため呼ばれたのかなと思っていました。しかし私自身が呼ばれて行ってみると、私の場合は衝立の裏に回され身体検査のようなことをさせられました。 保安検査をしっかり通っているので武器や危険物など持ってはおらず持ち込みバッグの検査ではなく、何か試験紙のようなもので服や靴を擦っていたので多分 Agriculture 関係の検査をしたのかと思います。しかし他にも自分と同じような風体の搭乗客がいるのになぜオレだけ(選ばれて!?)呼ばれたのか、何を基準にオレを選んだのか、気分はいいものではありませんでした。 係員に「なぜオレなのか」を聞いたところそれには答えず「米国 TSA の要望ですので」とだけの答えでした。私は帰化市民なので母国が言うならそれに従わなければなりません。 すいません、この状況下家に籠って何もすることがなく下らない質問を出させてもらいました。

  • 航空券予約のタイミング

    以下のURLの航空券で燃油サーチャージなど全部込みで10万ぐらいです。(前者は少し高くなりますが) オープンジョー有のできるだけ安い値段で探しているのですが、これは安いのでしょうか。 9月から10月にかけて行く予定ですが、予約は2カ月ぐらい前まで待った方がいいのでしょうか。 この先の原油の値段はだれにもわからないので運なのですが、航空券の値段はどうなのでしょうか?みなさんならどうしますか? http://www.tour.ne.jp/w_air/1138598/?dst_id=3&cty_id=118&cit_id=589&lflg=0&dp_y=2012&dp_m=09#cal http://www.ab-road.net/europe/turkey/istanbul/air/search/530685/?root_type=01&site_code=01&smonth=9&sday=0&start_city_cd=TYO,OSA,NGO,999&dc2=NRT,HND&destlist=IST

  • 複数のテーブルから値を取得したい

    とあるデータベース(mysql)に以下の2つのテーブルがあります。(【テーブル名】カラム名となっています) 【ブログ管理テーブル】 ブログID ブログカテゴリ ブログサイト名 ブログサイトURL  【記事管理テーブル】 記事タイトル 記事URL 記事フィード この2つのテーブルから次のような値を取り出したいと思っています。 ブログカテゴリ 記事タイトル 記事URL 記事フィード 複数のテーブルから値を取り出すには、テーブル同士を結合しないといけないということが分かり結合させてみたのですが、なぜか取り出すことができません・・・しかも、記事が重複して表示されてしまう・・・ 一体どのようなプログラムが必要でしょうか? 以上よろしくお願いします。

  • ワールドパークスのJAL国内特典旅行をWebで申し込むには?

    質問させてください。 ワールドパークスのマイルをもっているのですが、 JAL国内線で、東京から札幌まで往復の特典旅行をしたいと思っています。 以下のページに、ワールドパークスの特典旅行でJAL国内線が使えると書いてあります。 http://www.nwa.com/asia/jp/worldperks/redeemmiles/awardjl2004.html そのページの「マイルを使った特典旅行の予約はこちらから」から、 特典旅行のフライトの検索をしているのですが、 どんな日程(今日から10日後~70日後)で検索しても、空いているフライトがひとつも出てきません。 もしかした本当に空いているフライトがないのかもしれませんが…。 出発地はHND(羽田)、目的地はCTS(新千歳空港)にしていて、往復で検索しています。 私の検索方法が間違っていると思うのですが、 ご存知の方がいらっしゃいましたら、ご教授ください。

  • パラオの航空券手配の仕方

    こんにちは。 仕事で急きょ、パラオ行の航空券手配を頼まれましたが自分の航空券すら手配したことがなく困っています。 アドバイスいただけないでしょうか。 出発は来週に迫っています。 (1)成田→パラオ(コロール)デルタ航空直行便  ・日程確定 (2)パラオ→成田 デルタ航空直行便  ・日程未定(出発日から17日前後になる予定) こういった場合、往路と復路をばらばらで手配すればいいのでしょうか? また、デルタ航空のHPから直接手配できそうですが、AB-ROADなどに乗っているほうが大分安いようです。 こちらで手配する場合は、 http://www.ab-road.net/beach/palau/palau/air/search/?selectcity=1&action_type=3&orgcode=TYO&dc2=NRT&dc2=HND&visit_cd=beach%2Cpalau%2Cpalau&smonth=2&sday=&stay_length=&aircode=DL&seat_class=&starttzone=0&nonstop=1 にある、FIX/OPENというものを選べばよいのでしょうか? (その場合、復路の日程が後日決まった場合はどうやって予約を取ればよいのでしょう) 皆さんが利用している方法などもあれば教えて下さい。 宜しくお願いします。

  • この航空券の英語の意味は?

    部屋を整理していたら昔、アメリカへ旅行した時の航空券(もちろん使用済)が2枚出てきました。パンアメリカン航空(今はなく飛行機はロッキードトライスターだった)で成田からサンフランシスコへ。チケットは全て略英語。意味がわからないので教えて下さい。 PASSENGER TICKET and BAGGAGE CHECK ISSUED BY PAN AM PASSENGER 0265 ORIGIN OSAKA DESTINATION OSAKA 1630430 19MAR84 JAPAN TRAVEL BUREAU OSAKA JP 1USD/JYE224.30 TOUR CODE IT3PA3SLHC NAME OF PASSENGER TANAKA/MISS NOT TRANSFERBLE COUNCTION TICKET 023618969913-9914 FROM VOID FLIGHT VOID X/O X NOT GOOD FOR PASSAGE STANS FARE BASIS/TKT DESIGNTOR OKYJ/E35GV15/LAX ALLOW PC FARE JYE274000 TAX JYE680US TOTAL JYE274680 FARE CALCULATION OSA PA TYO PA SFO UA LAX M445.90 PA HNL PA OSA M445.90 1S33.70 FCU925.50