回答編集履歴

1 コードミス修正

Panzer_vor

Panzer_vor score 1614

2017/02/11 09:45  投稿

依頼を別で出させていただいてますが、
おそらく勉強目的でのサブクエリ化という認識で相違ないですかね?
(※サブクエリ化するメリットが見受けられないので要件・仕様的なところではないとは思ってます。)
(※サブクエリ化するメリットがあまり見受けられないので要件・仕様的なところではないとは思ってます。)
質問者様があげられて箇所をサブクエリ化した場合、
修正後のクエリは以下のようなイメージとなります。
```SQL
SELECT
  
 p.県コード,
  
 s.店コード,
  
 s.店名,
  
 t.*,
  
 IFNULL(nos.店舗数, 0) AS 店舗数
FROM
  
 県テーブル AS p
   -- 前回の回答追記にもありますが下記INNER JOINはCROSS JOINへ置き換え可能です。
   INNER JOIN (
FROM  
 
   (
       SELECT
           *
           p.県コード,
  
         s.店コード,
  
         s.店名
       FROM
           店テーブル
   ) AS s
           県テーブル AS p
           -- 下記は前回回答追記の通り「CROSS JOIN」へ置き換え可能です
           INNER JOIN 店テーブル AS s
   ) AS t
   LEFT OUTER JOIN 店舗数テーブル AS nos

    ON  p.県コード = nos.県コード
  
   AND s.店コード = nos.店コード

    ON  t.県コード = nos.県コード
  
   AND t.店コード = nos.店コード
ORDER BY
  
 県コード,
  
 店コード
  
 t.県コード,
  
 t.店コード
; 

```
---
結局**サブクエリ(副問い合わせ)って何ぞや**というと、
基本的には**一番外側のSELECT文(主問合わせ)**内の、
**いずれかの部分(SELECTのカラムリスト部分、FROM句内、WHERE句内など)に登場するSELECT文**を総称した呼び名です。
あまり難しく考えすぎなくとも良いかなと思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る