例えば、以下のような 2 つのテーブルがあるとします。
営業所テーブル (会社名) (担当者名)
会社A 担当者A
会社A 担当者B
会社B 担当者C
会社C 担当者D
商品売上テーブル (担当者) (売上)
担当者A 10万
担当者C 5万
担当者D 10万
これを以下のように会社名Aの会社だけを条件に「担当者B」の売上レコードがない場合でも、ゼロ件としてレコードを取得したいんですがどのようにすればよいのでしょうか。
(会社名)(担当者) (売上)
会社A 担当者A 10万
会社A 担当者B 0万
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
storkさんからACCESSの回答が出ていますのでOracleなどの場合を。
select 営業所テーブル.会社名,
営業所テーブル.担当者名,
商品売上テーブル.売上
from 営業所テーブル,商品売上テーブル
where 営業所テーブル.担当者=商品売上テーブル.担当者(+)
and 営業所テーブル.会社名='会社A'
;
です。
(+)を付けないと担当者Bは検索されません。
No.3
- 回答日時:
関連付けしたテーブルに行が存在しないときも表示したい場合は「left(right) outer join」を使用します。
ご質問のケースでいくと
select 営業所テーブル.会社名,
営業所テーブル.担当者名,
商品売上テーブル.売上
from 営業所テーブル left outer join 商品売上テーブル
on 営業所テーブル.担当者=商品売上テーブル.担当者
where 営業所テーブル.会社名='会社'
ですかね。
そのまま実行すると売上は0(ゼロ)ではなくnullになります。空白ではなく0で出力したければ、何らかの方法で0に置き換えることが必要になりますが、製品、開発環境固有の部分になりますので割愛させていただきます。
おせっかいですが、質問の例のテーブルは構造がおかしいように感じます。単なる例ならばいいのですが.....。
No.2
- 回答日時:
katu777さん、こんにちは。
悪戦苦闘しているようですね。
select 商品売上.担当者
sum(商品売上.売上)
from 商品売上
営業所
where 営業所.会社名=”会社A”
営業所.担当者=商品売上.担当者(+)
group by 商品売上.担当者
で、出来ませんか?
解説)
グルーピングと、集計関数・外部結合を使用します。
★外部結合
※ゼロの場合でも、NULLで、返します
(+)は、ORACLEの記述です。
SQLServerでは、左辺後(=の前)に *を入れます。
ゼロでなくNULLが着あえって来るので、NVL(Not Value-ORACLE)などを使用して、工夫してください。
参考になれば。
でわ
No.1
- 回答日時:
結果の部分、
(担当者) (売上)
担当者A 10万
担当者A 0万
は、
(担当者) (売上)
担当者A 10万
担当者B 0万
の間違いですよね?(^^;;
いろんな方法があると思うのですが、DBの種類によって異なります。
種類を教えていただけないでしょうか?
OracleとかSQLサーバーとか、Accessとか・・・。
基本的に外部結合にして、「nullだったら0」という形でコンバートするか、sum関数をかませばいけるような気がします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 【英語】海外向けの文書 宛先について 3 2022/10/06 09:57
- 所得・給料・お小遣い 最後の給料 4 2022/12/12 03:14
- 会社経営 【業務スーパーの創業者の会長は長男に期待していないのでしょうか?】 業務スーパーの長 1 2022/09/20 19:09
- 簿記検定・漢字検定・秘書検定 売上諸掛りについて 当社はブンタ株式会社ヘ商品100円に送料10円を加えた合計額で販売し、代金は掛け 3 2022/04/28 10:40
- その他(自転車) ダイハツ正規ディーラーの営業担当の方から車を購入しましたが、納車の時の対応やその他、あまり相性が合い 4 2022/04/04 20:38
- その他(悩み相談・人生相談) 建築商社勤務です。得意先の取引口座解除について 取引している得意先が横柄になって来て、当社の担当者が 1 2023/02/08 00:22
- 中途・キャリア もしある会社が、人員を募集していて、応募してきた人の職務経歴を見たら、取引をしている会社で働いていた 6 2022/09/29 15:15
- 就職・退職 携帯電話に入っている連絡先 8月末日で会社を退職する知人がいるんですが、知人の個人携帯電話に取引先の 2 2023/08/13 20:09
- 年賀状作成・はがき作成 商社勤務です。年賀状について 得意先に年賀状を出しています。 担当者が2行ほどコメントを手書きで入れ 3 2022/12/22 08:21
- 営業・販売・サービス 担当者はどう思ってるでしょうか。 1 2023/06/01 10:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WORD VBA プログラム修正をお願...
-
VBとアクセスでSQL文に変...
-
CSVファイルのエクスポートでソ...
-
AccessからExcelへエクスポート...
-
ExcelVBAについて
-
【ADO】「Execute」を使うと...
-
Excel複数シートをaccessへ一括...
-
Access2007でアプリケーション...
-
COBOLのINVALID KEYが理解でき...
-
CSVデータのダウンロード方法で...
-
JavaScriptで倉庫番を作りたい...
-
DataGridViewに複数テーブルの...
-
ACCESSのテーブル名をリストに...
-
ASP.NET GridView 一致した行の...
-
Accessで別mdbのテーブルをコピー
-
書式をテーブルにした場合の絞...
-
SQL同時実行違反
-
VBAで OLEオブジェクト型のフ...
-
DataSetの複数テーブルをひとつ...
-
HTMLのテーブルの行数が多くな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WORD VBA プログラム修正をお願...
-
VBとアクセスでSQL文に変...
-
Accessで別mdbのテーブルをコピー
-
『列名 '担当者CD' があいま...
-
ExcelVBAからAccessMDB内のテー...
-
他のMDBのテーブルに追加したい
-
手動または分散トランザクショ...
-
SQLを発行とは?クエリの作成と...
-
DataGridViewに複数テーブルの...
-
CSVファイルのエクスポートでソ...
-
AccessからExcelへエクスポート...
-
エクセルのテーブルを解除する...
-
Excel複数シートをaccessへ一括...
-
HTMLのテーブルの行数が多くな...
-
COBOLのINVALID KEYが理解でき...
-
アクセステーブル、リンクとロ...
-
ACCESSのテーブル名をリストに...
-
ACCESS2010 実行時エラー 2766
-
DataGridの中身をDataSetにテー...
-
【ADO】「Execute」を使うと...
おすすめ情報