下に記載した3つの表の上2つの表のように、レシピテーブルとレシピの評価テーブルがあります(両テーブル対応は1対1)。
このとき、以下のクエリーで両テーブルを結合しようと思っています。
(実際、レシピテーブルは縦持ちにしていますが、つなげるために横持ち変換したものを表示しています)
MySql
1select * from recipe as r left join (select * from eval) as e on r.レシピ名 = e.レシピ名
このクエリーを叩くと、一番下の表のようになり、同じ情報を持つ「レシピ名」が2列発生してしまうので、これを1列にできないでしょうか?
select の変わりに表示すべき全ての列名を列挙する方法が選択肢であることはわかるのですが、カラム数が多いので、直接記述は避けたいと思っています。データベース利用目的がアドホックなデータ解析であるため、(素人視点ですが)非明示なを使っても副作用は少ないと考えています。
レシピ(recipe)テーブル
|レシピ名|人参|じゃがいも|大根|豚肉|牛肉|
|:--|:--:|--:|
|カレー|50g|100g|0g|0g|100g|
|豚汁|30g|20g|20g|20g|0g|
評価(eval)テーブル
レシピ名 | Aさん評価 | Bさん評価 |
---|---|---|
カレー | 80点 | 20点 |
豚汁 | 70点 | 30点 |
クエリー結果 →レシピ名の重複を1つにしたい。
|a.レシピ名|人参|じゃがいも|大根|豚肉|牛肉|r.レシピ名|Aさん評価|Bさん評価|
|:--|:--:|--:|
|カレー|50g|100g|0g|0g|100g|カレー|80点|20点|
|豚汁|30g|20g|20g|20g|0g|豚汁|70点|30点|
回答2件
あなたの回答
tips
プレビュー