

[![画像1](https://i.stack.imgur.com/uW52J.png)](https://i.stack.imgur.com/uW52J.png)

**上の画像について**  
親テーブルがm_product  
子テーブルがt_salesになります。

[code]

    SELECT m_product.product_code,
     m_product.product_name,
     m_product.price,
     SUM(quantity) as total,
     SUM(quantity) * price as result 
    FROM m_product,t_sales
    WHERE m_product.product_code = t_sales.product_code
    GROUP BY m_product.product_code;
    
    
[/code]

**実現したいこと**  
上のSQL文を使いますと下の画像の様になりますが  
塩ラーメンの下に醤油ラーメンも表示させたいです。  
親テーブルと子テーブルの中身は変えないでです。  
テーブル作成のクリエイト文は変えられます。

**醤油ラーメンの中身**  
product_codeに003  
product_nameに醤油ラーメン  
他のprice total result に関してはnullか0を表示させたいです。

[![画像2](https://i.stack.imgur.com/pflMl.png)](https://i.stack.imgur.com/pflMl.png)

宜しくお願い致します。


CC BY-SA 4.0
2021-09-29T08:27:38.483
82753
2021-09-29T12:10:36.967
48247
question
mysql
親テーブルと子テーブルを利用したSELECT文について


内部結合では結合できないレコードを表示させる場合は、[左外部結合](https://dev.mysql.com/doc/refman/5.6/ja/join.html)などを使用します。

**SQL文**

[code]

    SELECT m_product.product_code,
     m_product.product_name,
     m_product.price,
     SUM(quantity) as total,
     SUM(quantity) * price as result 
    FROM m_product left join t_sales on m_product.product_code = t_sales.product_code
    GROUP BY m_product.product_code;
    
[/code]

**結果**

product_code | product_name | price | total | result  
---|---|---|---|---  
001 | 味噌ラーメン | 100 | 10 | 1000  
002 | 塩ラーメン | 1000 | 0 | 0  
003 | 醤油ラーメン | 1000 | (null) | (null)  
  
**DDL文、insert文**

[code]

    create table m_product(product_code char(3), product_name  varchar(20), price int);
    insert into m_product values ('001', '味噌ラーメン', 100); 
    insert into m_product values ('002', '塩ラーメン', 1000);
    insert into m_product values ('003', '醤油ラーメン', 1000);
    
    create table t_sales(product_code char(3), quantity int);
    insert into t_sales values ('001', 10);
    insert into t_sales values ('002', 0);
    
[/code]

テーブルが画像では回答しづらいので、テキスト化した方が回答を得やすいかもしれません。  
[SQL Fiddle](http://sqlfiddle.com/#!9/c780a6/2)


CC BY-SA 4.0
2021-09-29T12:10:36.967
82761
2021-09-29T12:10:36.967
9820
82753
answer