- ベストアンサー
ACCESS SQLの左結合の理由とは?
nan93850673の回答
INNER JOINをすべき所を間違ってLEFT JOINにしているのでなければ、 SELECTの項目、GROUP BY、HAVING、ORDER BY何れにもテーブルBの項目が使われていないので、式(1)のLEFT 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 |青組|
- ベストアンサー
- Oracle
- 【至急】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がスマートでしょうか。。 無知で申し訳ございませんが、ご教授いただけますと幸いです。 よろしくお願いいたします。 ※キー項目の値は条件に指定できない(持っていない)ことがわかりました。 先ほどの質問にご回答下さった皆様、申し訳ございません。
- ベストアンサー
- SQL Server
- 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のレコードを全部 と言うのは選べるのですが、 両方のテーブルいずれかにあればデータを持ってくる と言う設定が分かりません。 すみません。どなたか教えて下さい。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
お礼
やはり、結合は不要ということですね。 なお、「INNER JOINをすべき所を間違って LEFT JOINにしているのでなければ」と 但し書きが付いているのは、 LEFT JOINではなくINNER JOINであれば、 差異がある(結合する意味がある)ということですね。 ありがとうございました。