• 締切済み

SQL文を教えてください

以下の2つのテーブルから結果に書かれている内容を取得したいのですが、どのようなSQLを作成すればよいでしょうか? 料理テーブル 料理名 値段 ラーメン 1000 カレー 700 焼肉定食 800 オプションテーブル 料理名 オプション(00:ご飯、01:味噌汁、02:サラダ) ラーメン 00 ラーメン 01 カレー 00 焼肉定食 00 焼肉定食 01 焼肉定食 02 取得したい結果 ご飯をa、味噌汁をb、サラダをcとして、オプション有の場合は'1'を、なしの場合は'0'をたて、 オプションをabcと3桁で表したいのですが。 料理名 オプション ラーメン 110 カレー 100 焼肉定食 111 説明が下手ですいませんが、よろしくお願いします。

みんなの回答

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.3

こんなのでどうでしょ。 SELECT A.料理名 , ISNULL(MAX(CASE B.オプション WHEN '00' THEN '1' END), '0') + ISNULL(MAX(CASE B.オプション WHEN '01' THEN '1' END), '0') + ISNULL(MAX(CASE B.オプション WHEN '02' THEN '1' END), '0') AS オプション FROM 料理テーブル AS A LEFT JOIN オプションテーブル AS B ON A.料理名 = B.料理名 GROUP BY A.料理名

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

手元にSQL Serverが無いのですが、 以下のような感じでどうかなと思います。 SELECT 料理名, CASE WHEN A=0 THEN '0' ELSE '1' END + CASE WHEN B=0 THEN '0' ELSE '1' END + CASE WHEN C=0 THEN '0' ELSE '1' END AS オプション FROM (SELECT 料理名, ,SUM(CASE WHEN オプション='00' THEN 1 ELSE 0 END) AS A ,SUM(CASE WHEN オプション='01' THEN 1 ELSE 0 END) AS B ,SUM(CASE WHEN オプション='02' THEN 1 ELSE 0 END) AS C FROM オプションテーブル GROUP BY 料理名)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

オプションの値で2(もしくは10)のべき乗を計算して、集計するとか。

関連するQ&A