改めて書くと以下の SQL ですが、欲しい結果は『得意先担当を持たない社員の一覧』です。ですが、このままでは得意先担当を持つ社員も表示されるので、件数が 0 の行を取り出したいわけです。
select 社員コード, 氏名, (select count(*) from 得意先マスタ where 担当者 = 社員コード) as 件数 from 社員マスタ
しかし、この SQL の最後に where 件数 = 0 とは書けないので、この内容を view にしてしまえばいいわけです。ただ、実際問題 view を定義しなくとも、from に このクエリを書けば解決します。 ( Oracle で言うところのインラインビュー / 今でもそう言うのだろうか? )
select * from (select 社員コード,氏名,(select count(*) from 得意先マスタ where 担当者 = 社員コード) as 件数 from 社員マスタ) as 別名 where 件数 = 0
ここで注意なのは、SQLServer では別名が必要なところ、Oracle では別名は省略できるはずです。 ちょっと確認したのが古いのですが、こちらが他の RDBMS を含めた情報です。
|
|
【DB関連の最新記事】
- 複数行のグループデータを1行にまとめるSQL
- テーブル設計書作成 : VBScript + Excel.Application + SQLServer
- SQL Server とそのコンポーネントのバージョンとエディションを確認
- land.to での PHP + PostgreSQLでの接続テスト
- SQL*PlusだけでCSVを作成する
- PHP と MySQL 限定で SQL インジェクションを考えた場合
- Oracle11g + Windows7 : InstantClient を使用した軽量接続 ( Win32 )
- MySQL:GPLな再配布。プログラムは無しでデータのみ追加
- MySQL5.1.4の半手動インストール(インストール場所の変更)
- グループ関数の原則
- Oracleエクスポートユーティリティ(expdp)パラメータ入力支援HTMLアプリケーション
- 今年もPL/SQLはFunctionから
- OracleInstantClientによる接続確認
- SYSTEMユーザからスキーマを作成、販売管理データを投入する
- BCP.EXEで自動採番列(INTIDENTITY)を持つデータの移行
- SQLExpress2005のインストールから最速設定(2)
- SQLExpress2005のインストールから最速設定(3)
- SQLExpress2005のインストールから最速設定(1)
- 【Oracle10g接続】InstantClientを使用した接続
- MySQL5.1.26をUSBメモリに入れて使用する




























