1

ここに4つのMySQLテーブルが表示されています:SQL Fiddle

特定のセットの各ステーションのステーション名、ブランド、fuel_type、fual_priceを選択し、特定のセットの燃料タイプを選択する必要があります。すべてのシェルステーションに燃料ディーゼルとナチュラルを使用します。

1つのステーションに関連するすべてのデータを1つの行に入れたいのですが、これは、たとえば1つのステーションに対して5つの燃料タイプ/価格があることを意味します。

出力例-

id | name     | brand | fuel-data
---------------------------------------------------------
1  | Brzotice | Shell | Natural95-37.9, Diesel Power-45.8

手伝っていただけませんか?

4

1 に答える 1

3

これはあなたが望むものを与えると思います:

select s.id, 
  s.name,
  b.brand,
  group_concat(concat(f.type, '-', fs.price)) Fuel_Data
from sam_fuel f
left join sam_station_fuel fs
  on f.id = fs.id_fuel
left join sam_station s
  on fs.id_station = s.id
left join sam_station_brand b
  on s.brand = b.id
group by s.id, s.name, b.brand

デモで SQL Fiddle を参照してください

基本的に、このクエリはすべてのテーブルを結合します。次に、フィールドを取得するために、関数と関数fuel_dataの両方を適用しますCONCAT()GROUP_CONCAT()

于 2012-10-03T18:38:21.570 に答える