http://office.microsoft.com/ja-jp/access-help/HA010341462.aspx
★テーブル名の文字数の最大値は64だそうで、サブクエリをFROM句で使うときに、長さがこれを超えるとエラー(FROM句の構文エラー)になる可能性あり。
①WHERE句に使用
SELECT 受注ID
FROM 受注明細テーブル
WHERE 商品ID IN
(SELECT 商品ID FROM 商品テーブル WHERE 商品形態ID = 21)
結果
受注ID
-------------
46608
46610
46611
…中略…
50756
※残念だけど、ONにはサブクエリは使えないようです~。だよね・・・
②SELECT句に使用
※ 顧客ごとの受注件数と全体の受注件数の差異を確認
SELECT お客様ID,COUNT(*) AS Cnt_Cust,
(SELECT COUNT(*) FROM 受注テーブル ) AS Cnt_All
FROM 受注テーブル GROUP BY お客様I
——————————
結果
お客様ID Cnt_Cust Cnt_All
-----------------------------------------
1 4 31465
2 8 31465
3 12 31465
…中略…
29483 1 31465
③FROM句で使用
SELECT AVG(Cnt_Detail) AS AVG_Detail
FROM
(SELECT COUNT(*) AS Cnt_Detail
FROM 受注明細テーブル
GROUP BY 受注ID ) AS SOD
———————————
結果
AVG_Detail
----------
3
応用編
SELECT 適当
FROM hogehoge AS hh
LEFT JOIN(
SELECT *
FROM fugafuga AS fuga1
INNER JOIN(
SELECT 適当
FROM fugafuga AS fuga2
GROUP BY 適当
) AS fuga3
ON なんか処理
AND なんか処理
GROUP BY 適当
) AS f
ON 適当な処理
AND 適当な処理
LEFT JOIN ・・・