• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS SQL 左結合しなければならない理由)

ACCESS SQLの左結合の理由とは?

nan93850673の回答

  • ベストアンサー
回答No.2

INNER JOINをすべき所を間違ってLEFT JOINにしているのでなければ、 SELECTの項目、GROUP BY、HAVING、ORDER BY何れにもテーブルBの項目が使われていないので、式(1)のLEFT JOINは不要です。

yam2012
質問者

お礼

やはり、結合は不要ということですね。 なお、「INNER JOINをすべき所を間違って LEFT JOINにしているのでなければ」と 但し書きが付いているのは、 LEFT JOINではなくINNER JOINであれば、 差異がある(結合する意味がある)ということですね。 ありがとうございました。

関連するQ&A

  • SQLの結合について

    データベース初心者です。 使用しているデータベースは、DB2です。 質問ですが、テーブルAとテーブルBに対して、それぞれにSelect文を実行した結果があるとして、その2つの結果を結合することは可能でしょうか? テーブルAに対し、Select文を実行した結果 氏名   年齢   ID --------------------- ○○○  50   00001 △△△  20   00002 ×××  30   00003 テーブルBに対し、Select文を実行した結果 出身地  住所   管理No --------------------- ■■■  あああ  00001 ◆◆◆  いいい  00002 ●●●  ううう   00003 上記2つの結果を結合して以下のような結果を求めたい。 氏名   年齢   ID 出身地  住所 ----------------------------------------------- ○○○  50   00001 ■■■  あああ △△△  20   00002 ◆◆◆  いいい ×××  30   00003 ●●●  ううう ご教授のほどお願い致します。

  • ACCESS2010 SQL 結合キーについて

    お世話になります。拙い文面ではありますがよろしくお願いいたします。 Vista ACCESS2010を使用しています。 下記SQLで2個のテーブルを外部結合していますが、テーブルの一方で結合で使用しているフィールドの桁が変更になり、テキスト型のフィールドを0埋めして外部結合しようとしています。フィールドを関数で桁揃えして結合キーとして使用することはできないものでしょうか。 ---売上金額---------- 対象月 テキスト型 商品ID テキスト型 商品名 テキスト型 支店CD テキスト型 金額  通貨型 支店CD 3ケタ→5ケタへ変更 ---支店マスタ-------- 支店CD テキスト型 支店名 テキスト型 支店ソート番号 数値型 支店CD 3ケタ・・・売上金額の支店CD変更に伴い、Format等で5ケタへ変更したい ---変更前----- SELECT a.商品ID,a.商品名,a.支店CD,b.支店名,b.支店ソート番号,a.金額 FROM 売上金額 a LEFT JOIN 支店マスタ b ON a.支店CD = b.支店CD WHERE a.対象月 >=#2013/04/01# AND a.対象月 <=#2013/07/31# GROUP BY a.商品ID,a.商品名,a.支店CD,b.支店名,b.支店ソート番号,a.金額 ---以下へ変更--- SELECT a.商品ID,a.商品名,Format([支店CD],"00000"),a.支店名,支店ソート番号,a.金額 FROM 売上金額 a LEFT JOIN 支店マスタ b ON a.支店CD = b.支店CD    WHERE a.対象月 >=#2013/04/01# AND a.対象月<=#2013/07/31# GROUP BY a.商品ID,a.商品名,Format([支店CD],"00000"),a.支店名,b.支店ソート番号,a.金額 変更後の ON以下を次のように変更するとJOINでサポートされていませんのエラーとなります。 ON Format([a.支店CD],"00000") = b.支店名  都合上フィールドとテーブル名は変更していますがそれ以外は変わりません。 よろしくお願いいたします。

  • テーブルの結合?

    accessのテーブル2つを1つのテーブルにする方法を教えていただけないでしょうか。 《テーブルA》 氏名,住所,電話番号,・・・・ 《テーブルA》 氏名,健康保険番号,雇用保険番号,・・・・ 氏名は、テーブルAとテーブルBで一致しています。 とりあえず、1個のテーブルにしてしまいたいのですが。

  • SQLのテーブル結合

    SQLのSELECTについて質問です。 テーブルA、B、Cから情報を取得し、下記の画面イメージを表示させたいのですが、 どのようにテーブルを結合すればよいか判りません。 どなたかご教示ください・・・。よろしくお願いします。 #テーブルCから組名を取得するような処理は画面表示のロジックで行います。 #テーブルA、Bの結合についてのみ、教えていただきたいです。 条件 ・氏名と、所属情報の○×を表示したい ・DISTINCT等、重たい処理は避けたい 画面イメージ |氏名  |赤組|白組|青組| ------------------------------ |山田太郎|○ |× |× | |山田花子|× |○ |○ | テーブルA |個人ID|氏名  | -------------------- |000001|山田太郎| |000002|山田花子| テーブルB |個人ID|組コード| -------------------- |000001|1110  | |000002|1111  | |000002|1112  | テーブルC |組コード|組名| ------------------ |1110  |赤組| |1111  |白組| |1112  |青組|

  • 【至急】SQLの結合について教えてください(2)

    select * from A select ef from B where ef = '3' かつ、A.ab = B.ab and A.cd = B.cd 至急質問させてください。 上記SQLを結合したいです。 取得したいデータはAのテーブルの全項目で、 取得条件として、Aのテーブルのキー項目 = Bのテーブルのキー項目に、Bのテーブルの項目ef = '3' だったらという条件を加えたいです。 どのようなSQLがスマートでしょうか。。 無知で申し訳ございませんが、ご教授いただけますと幸いです。 よろしくお願いいたします。 ※キー項目の値は条件に指定できない(持っていない)ことがわかりました。 先ほどの質問にご回答下さった皆様、申し訳ございません。

  • ACCESSのテーブル結合に関して

    初歩的な事で申し訳ありませんが、教えて下さい。 以下のように3つのテーブルが存在し、検索条件をBテーブルの仕入先コードが"AAA"と 指定した際に、 発注番号、発注日付、仕入先コード、仕入先名 という形でOUTPUTしようと考えています。 その場合、クエリではどのように結合すれば良いでしょうか。。。 Aテーブルの発注番号とBテーブルの発注番号、Bテーブルの仕入先コードとCテーブルの 仕入先名という結合の形では、条件の"AAA"が1件しかないにもかかわらず、複数件出力されて しまうかと思われます。 《テーブル内容》 Aテーブル 発注番号 発注日付 Bテーブル 発注番号 仕入先コード Cテーブル 仕入先コード 仕入先名 ※ Bテーブル、Cテーブルの仕入先コード"AAA"は、それぞれ1件ずつしかない。 教えて頂きたいと思います。

  • ACCESSのSQLで・・・

    ACCESS2003を使用しています。 氏名の苗字と名前の間にある空白をSQLで取り除きたいのですが、どのようにしたらいいのでしょうか? 教えて下さい。 そして空白を取り除いた後、空白なしの氏名と住所の入った別のテーブルと結合したいのです。 これも合わせて教えて下さい。 よろしくお願いします。

  • ACCESS2000でSQLのループがうまくいかない

    ACCESS2000のVBAを使ってプログラムを組んでおります。 テーブル・クエリの構成等は以下のようになることが目的です。 【テーブルA】:全国営業所住所情報         1.新住所コード(数値)         2.都道府県名(テキスト)         3.漢字市区町村名(テキスト)         4.営業所が管轄している代理店名(テキスト):列名「代理店名」   【テーブルB】:営業所設立情報          1.新住所コード(数値)         2.都道府県名(テキスト)         3.漢字市区町村名(テキスト)         4.営業所設立年月(テキスト)         【テーブルC】:各営業所売上情報         1.新住所コード(数値)         2.営業所番号(テキスト)         3.商品の売上個数(数値) 【テーブルD】:メンテ用~上記、ABCを使ったクエリをVBAで作成するときにプログラムの中で参照するテーブル。         1都道府県名(テキスト)         2都道府県名グループ番号(テキスト):列名は「式1」でグループ番号は1から9まで         3各営業所名(テキスト) *テーブルの関係は  テーブルA:テーブルB:テーブルC=1:1:n。  各テーブルには「新住所コード」という共通のKEYを持っており、下記のようなリレーションシップがあります。   ●Aテーブル→Bテーブル→Cテーブル              →C'テーブル              →C''テーブル            (→は「LEFT JOIN」の意) ループは、BテーブルとCテーブル(複数)のリレーションを組むところに使っておるのですが、 きちんとプログラムが動いてくれずに悩んでおります。 どのようなプログラムを組んだほうがいいでしょうか? (私が組んだプログラムは追記させて頂きます。)

  • アクセスの複雑な条件での結合について

    久々に質問させていただきたいのですが、 アクセスでテーブル同士を結合させたいのですが、 現在、複雑すぎてデザインビューで表示できないので、SQLで作ったのですが、処理が重くて困っています。 やりたい結合は新しいデータと古いデータを結合したいです。 しかし、一つの結合ではデータの一貫性がないところがあり、抽出もれがおおいので、以下の条件で抽出しています。 テーブルA(日付1、姓、名前、名前カナ、日付2、・・・) テーブルB(日付3、姓、名前、名前カナ、日付4・・・) 結合条件 日付1=日付3 AND (氏名の名前=名前 OR 名前カナ=名前カナ) AND (year(日付2)=year(日付4) AND month(日付2)=month(日付4)) データ上、女性が多く、また、紙のパンチのデータのため、氏名の漢字も違っている場合があるので、このような条件にしましたが、軽くできないでしょうか? 明らかにデータがよろしくないのは承知していますが、アドバイスお願いします。

  • Access 結合プロパティについて

    Access2010ですが、クエリの結合プロパティについて教えて下さい。 【テーブルA】 1 A1 2 A2 3 A3 【テーブルB】 2 B2 3 B3 4 B4 と言うテーブルから 【結合クエリ】 1 A1 2 A2 B2 3 A3 B3 4 B4 を作りたいです。 ところが、結合プロパティでは、 ・テーブルAのレコードを全部 ・テーブルBのレコードを全部 と言うのは選べるのですが、 両方のテーブルいずれかにあればデータを持ってくる と言う設定が分かりません。 すみません。どなたか教えて下さい。 よろしくお願いいたします。