アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access2000でクエリを作成します。
SQLで
SELECT お支払.ID_支払, お支払.N_伝票No, お支払.N_支払金額, お支払.N_支払区分コード
FROM 伝票 LEFT JOIN (支払区分マスター INNER JOIN お支払 ON 支払区分マスター.N_支払区分コード = お支払.N_支払区分コード) ON 伝票.N_伝票No = お支払.N_伝票No;

とすると あいまいな外部結合が含まれている・・というエラーがでてしまいます。どうしたらいいでしょうか。

伝票は全て表示して、その中のお支払には、区分コードを割り当てたいだけなのですが。
宜しくお願い致します。

A 回答 (2件)

LeftJoinの結合先にInnerJoinがあると、そのエラーが生じますので、


そのInnerJoinをLeftJoinに変えます。
(クエリをデザインビューで表示させた場合でいうと、「○→□-△」でエラー。
 「○-□→△」や「○→□→△」(=下の修正版)なら、エラーになりません)

SELECT お支払.ID, お支払.N_伝票No, お支払.N_支払金額, お支払.N_支払区分コード
FROM 伝票 LEFT JOIN (お支払 LEFT JOIN 支払区分マスター ON お支払.N_支払区分コード = 支払区分マスター.N_支払区分コード) ON 伝票.N_伝票No = お支払.N_伝票No;
    • good
    • 0
この回答へのお礼

とりあえず、できました。ありがとうございます。
いろいろ調べてたのですが、こんなあっさりできてとても助かりました。

そして、できたらこのような情報がどこをみればわかるのか教えてもらえないでしょうか。

お礼日時:2006/12/23 10:53

No.1です。



> このような情報がどこをみればわかるのか

すみません、私もトライ&エラーで憶えたもので・・・(汗)

なので、発生したエラーに対してどう対処したら、という一覧のような
ものは知らないのですが、VBAなどのコードを調べる際に使わせて
もらっているサイトを、参考までに挙げておきます;
(実際には、こちらのトップから入るというより、googleなどで検索した
 結果からお邪魔しているのですが)
http://www.tsware.jp/
http://www.accessclub.jp/


なお、前回の回答をする際に失念していたのですが、クエリを2つに
分割してやれば、InnerJoinのままでも対応可能でしたので、
以下に記しておきます。


お支払Q;

SELECT お支払.ID, お支払.N_伝票No, お支払.N_支払金額, お支払.N_支払区分コード
FROM お支払 INNER JOIN 支払区分マスター ON お支払.N_支払区分コード = 支払区分マスター.N_支払区分コード;


上の「お支払Q」クエリを使用し、前回回答と(ほぼ)同じ結果を返すSQL
(「お支払」にあって「支払区分マスター」にないデータがある場合、
 そのデータ分は結果が異なります);

SELECT お支払Q.ID, お支払Q.N_伝票No, お支払Q.N_支払金額, お支払Q.N_支払区分コード
FROM 伝票 LEFT JOIN お支払Q ON 伝票.N_伝票No = お支払Q.N_伝票No;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

クエリを分割してできる事は、わかっていたのですが、
SQL自体の納得がいかなかったことと、
VBAのソースでSQLを使うときに困る事も(??)あると思い
今後のことを考えどうしても連結してやりたかったのです。

分割の場合はINNER JOIN なので 先の例の LEFT JOIN との違い
があることはわかります。

今回の場合は、最初INNER JOIN でやってましたが、むしろ
LEFT JOIN のほうがこちらの意図にも、あってました。

● LeftJoinの結合先にInnerJoinがあると、そのエラーが生じる
とのご指摘のことで、ネットでいろいろ探したのですが、
自分が見つけられたのは、
http://office.microsoft.com/ja-jp/access/HP01032 …
http://office.microsoft.com/ja-jp/access/HP01032 …

"INNER JOIN を LEFT JOIN または RIGHT JOIN の中にネストすることはできません" とのわずかこの文章だけです。(特に理由も書いてありません)
よく考えば、わかること??なのかも??しれませんが。

トライ&エラーで得た、本当に貴重な情報を提供していただいて
どうもありがとうございました。

お礼日時:2006/12/24 00:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A