以下のテーブルAとテーブルBを結合して結果テーブルを出力したいと考えています。
(テーブルA上のIDのカウントした数をテーブルBに結合して出力したい。)
テーブルA
-----------
CATEID
aaa001
bbb001
ccc003
ddd004
テーブルB
-----------
IDNAME
001101
002102
003103
004104
結果テーブル
----------------------
IDNAMECOUNT
0011012
0021020
0031031
0041041
そこで、
===================================
SELECT B.ID, B.NAME, COUNT(A.ID)
FROM TABLE_A B, TABLE_B B
GROUP BY B.ID, B.NAME, A.ID
HAVING A.ID = B.ID
===================================
とSQLを書いてみましたが、
0021020
のテーブルAにIDが存在していない列が結果として表示されませんでした。
WHERE句でいう「WHERE A.ID =* B.ID」のようなことを行いたいのですが、どのように行えばよいでしょうか?
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
なにか普通に処理してはいけない(=HAVINGを使わなくてはならない)事情をお持ちですか?
こうやればできますが、CROSS JOINはCostlyです。
SELECT b.ID, b.NAME,
SUM(CASE WHEN A.ID=B.ID THEN 1 ELSE 0 END)
FROM table_a a, table_b b
GROUP BY b.ID, b.NAME
普通は、こんな風に書くのでは。。?
SELECT
b.ID,
b.NAME,
COUNT(DISTINCT cate)
FROM table_b b
LEFT OUTER JOIN table_a a ON a.ID=b.ID
GROUP BY b.ID,b.NAME
SELECT
b.ID,
b.NAME,
NVL(CNT,0)
FROM table_b b
LEFT OUTER JOIN
(SELECT ID,COUNT(*) CNT
FROM table_a
GROUP BY ID) a ON a.ID=b.ID
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
truncate tableを使って複数の...
-
オラクルのUPDATEで複数テーブル
-
テーブルに変更があったらCSV出力
-
エラーを起こす方法
-
CASEでBETWEEN制約
-
既にテーブルが存在する場合の...
-
テーブル定義書(Oracle) 【IX】...
-
SQL-LOADERについて
-
ORA-01630の対応方法について
-
テーブルDROPできないのです。。。
-
viewの性能
-
データ削除とSQL*Loaderでのイ...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
ACCESS クエリーでソートの不具合
-
PostgreSQLのtimestamp型で時間...
-
Accessで今日から5日後
-
既存データをINSERT文にして出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
truncate tableを使って複数の...
-
オラクルのUPDATEで複数テーブル
-
エラーを起こす方法
-
既にテーブルが存在する場合の...
-
テーブル定義書(Oracle) 【IX】...
-
データ削除とSQL*Loaderでのイ...
-
複数レコードの複数フィールド...
-
CASEでBETWEEN制約
-
テーブルに変更があったらCSV出力
-
accessのデータをoracleへinser...
-
Where句のNot条件をAnd条件にし...
-
pro*cobol ⇔ oracle のデータ型...
-
oracle ora-02298
-
ora-01722のエラーについて
-
フィールド数が異なるテーブル...
-
AccessVBAにて動的にテーブルを...
-
[materialized]マテリアライズ...
-
viewの性能
-
ORA-01630の対応方法について
-
レコードを指定項目の数値分取...
おすすめ情報