お世話になっております。質問タイトルと内容がマッチしていないかもしれません。(何て書けばいいかわかりませんでした。。。)
ある条件をもとに、別データベースから取得した
$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 , 小松空港
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
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です。
mooboogieさん
ご返答ありがとうございました。
自分なりに考え、またmooboogieさんのコードにgroup byというのがあったので、使ってみたらなんとかなりそうでした。。。
本当にありがとうございました。
No.1
- 回答日時:
MySQLでの実現方法を質問する場合は、必ずバージョンを明記してください。
具体的なSQL例を提示しても、あなたの環境では動かない可能性があります。>どうしたらいいのでしょうか?
あなたの考えた方法は、まったくないのでしょうか?
ここは仕様を提示して、何かを作ってもらう場所ではありません。
以下のような形で、表示したいということでしょうか?
AAT1 , 東京
AAT1 , 札幌
AAT1 , 小松
AAT1 , 大阪
COT , 東京
QFT3 , 成田
LHT2 , 成田
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(交通機関・地図) なんで関西の交通網って天国状態なの? 1 2022/04/16 06:57
- 日本語 名前のローマ字表記について 例えば山田太郎の場合、taro yamadaですが、taro ymdのよ 2 2022/08/03 15:51
- 電車・路線・地下鉄 電車の行先 4 2022/05/20 10:42
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- その他(交通機関・地図) 新百合ヶ丘から羽田空港行きのバスで行った場合、降り場は何階のどこですか? 4 2022/12/31 11:55
- 飛行機・空港 コンサートで札幌ドームに行きます。 予定としては、東京駅から羽田空港まで、直行バス。羽田空港から新千 2 2023/01/11 19:43
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- 飛行機・空港 AXT,HND,NRT,SPN,GUM,NRT,AXTで国内線はpremium class,inte 1 2023/07/09 17:54
- 経済 夢洲の万博会場用地、万博終了後はどうなるか? 6 2023/04/12 16:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mySQLのデータベースにhtmlのコ...
-
あるDBから別のDBのテーブルをs...
-
phpmyAdminでmySQLのdumpデータ...
-
データベースの複製の仕方(mysql)
-
Mysqlのデータベースのリンク
-
データベースのパンク
-
MySQLデータベースを2つ利用
-
SQLServerのselect文でデータ数...
-
私の考えていることは ・mySQL ...
-
html上でMySQLにアクセス(Java...
-
MySQLの設定ミス
-
ユーザにインフォメーション ス...
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
PL/SQLをWindowsのBATファイル...
-
本を見ながらPHPを勉強している...
-
同じSQL文で極端に検索が遅くな...
-
mysqlにおけるホストのパーセン...
-
create databaseがうまくいきま...
-
badファイルの内容を知る方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるDBから別のDBのテーブルをs...
-
html上でMySQLにアクセス(Java...
-
SQLServerのselect文でデータ数...
-
バッチファイルではパスワード...
-
mySQLのデータベースにhtmlのコ...
-
htmlタグを含んだ文字のデータ...
-
どの程度のデータベースなら、c...
-
データベースの複製の仕方(mysql)
-
Mysqlのデータベースのリンク
-
私の考えていることは ・mySQL ...
-
MySQL4.1以上で、機種依存文字...
-
データベースに配列を格納する
-
ロータスアプローチでデータ連...
-
データベースに画像を入れた場...
-
firebird,SQLトレーナーの使い方
-
sql merge文について
-
MYSQL で検索した結果を印刷したい
-
MySQL データベースをデタッチ
-
MySQLからのデータ取得で日本語...
-
mysqlデータベース内のuserテー...
おすすめ情報