
3つのテーブルを連携した並び替えのSELECT文について教えて下さい。
例えば次の3つのテーブルがあるとします。
COOK_TBL
----------------
COOK_NAME
パスタ
パスタ
グラタン
オムライス
グラタン
カレー
ZAIRYO_TBL
---------------
COOK_NAME ZAIRYO_NAME
グラタン 鶏肉
オムライス 卵
オムライス 玉ねぎ
パスタ 卵
パスタ 麺
COOK_KIOKU_TBL
---------------
COOK_NAME
オムライス
グラタン
COOK_TBLのCOOK_NAMEでグルーピングしたものに対し、ZAIRYO_TBLのCOOK_NAMEに存在するものは全て抽出し、
COOK_KIOKU_TBLのCOOK_NAMEとCOOK_TBLのCOOK_NAMEと一致するレコードは頭の方(COOK_KIOKU_TBLのCOOK_NAMEのレコード順)に並び替えられるようにしたいです。
得たい結果は次の通りです。
COOK_TBL
-------------
COOK_NAME
オムライス
グラタン
パスタ
どうしても分かりません。
助けて下さい。
os: windows 7
eclipse: Version: 4.2.0
No.1ベストアンサー
- 回答日時:
>COOK_KIOKU_TBLのCOOK_NAMEとCOOK_TBLのCOOK_NAMEと一致するレコードは頭の方
というのであればCOOK_KIOKU_TBLに順位を確定させるためのソートキーが必要
それぞれidをふるとするとこんな感じかな?
create table COOK_TBL(cid int not null primary key auto_increment,COOK_NAME varchar(10));
insert into COOK_TBL(COOK_NAME) values('パスタ'),('パスタ'),('グラタン'),('オムライス'),('グラタン'),('カレー');
create table ZAIRYO_TBL(zid int not null primary key auto_increment,COOK_NAME varchar(10),ZAIRYO_NAME varchar(10));
insert into ZAIRYO_TBL(COOK_NAME,ZAIRYO_NAME) values('グラタン','鶏肉'),('オムライス','卵'),('オムライス','玉ねぎ'),('パスタ','卵'),('パスタ','麺');
create table COOK_KIOKU_TBL(kid int not null primary key auto_increment,COOK_NAME varchar(10));
insert into COOK_KIOKU_TBL (COOK_NAME) values('オムライス'),('グラタン');
//表示
SELECT DISTINCT k.kid,c.COOK_NAME FROM COOK_TBL as c
INNER JOIN ZAIRYO_TBL as z ON c.COOK_NAME=z.COOK_NAME
LEFT JOIN COOK_KIOKU_TBL as k ON c.COOK_NAME=k.COOK_NAME
ORDER BY COALESCE(k.kid,9999);
→kidがnullになる場合は適当に大きなデータにしておく(手抜き)
→kid以外のソートが設定されていないので、ソート順は必ずしも一意にならない
回答ありがとうございます。
各テーブルの定義まで書いた方がよかったかなと少し反省しています。
見たこともない文字を使ったSQLの回答でしたので、自分でできるわけがなかったなとも感じてます。
回答は何となく分かりましたが、いただいたSQLを調べて勉強します。
助かりました。本当にありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlがインストールされている...
-
#1062 - '0' は索引 'PRIMARY' ...
-
データベースの接続に失敗して...
-
[XAMPP Control Panel v3.2.4] ...
-
下記の問合せを行うクエリを、P...
-
テーブル名が可変の場合のクエ...
-
テーブル作成時のカラムについて
-
同一日に複数レコードがある場...
-
MAMP 99ドル約1.6万円 高い...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
mysqlがインストールされている...
-
エラー 1068 (42000): 複数の主...
-
mysqlのupdate構文についての質...
-
SQLでカラムを追加し、条件に合...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
テーブル名が可変の場合のクエ...
-
utf8bomとutf8mb4の違いがいま...
-
(初心者)MySQLやmaraDBで、crea...
-
MAMP 99ドル約1.6万円 高い...
-
SQLを作ったのですがうまくいき...
-
SQLで漢字名称を都道府県や市区...
-
同一日に複数レコードがある場...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
あってますか?SQL
-
SELECT * FROM `生徒名簿` INNE...
-
初心者Mysqlの関数のsubstring...
おすすめ情報