• ベストアンサー

アクセス 結合プロパティ が正しく結合されない(アクセス初心者です)

請求明細テーブルと、支払明細テーブルの指定伝票番号で結合して、 請求明細テーブルの全レコードと、支払明細テーブルの請求明細テーブルと一致するレコードだけを表示させたく、結合プロパティをそのように設定しました。 SQLは、下記のようになりました。 select 請求明細.指定伝票番号, 請求明細.計 from 請求明細 left join 支払明細 on 請求明細.指定伝票番号=支払明細.指定伝票番号 すると、思わぬことがおきました。 請求明細テーブルの全レコードが表示されず、一部欠落してしまいました。 同じような質問をしている人の、回答を見させていただいたところ、上記のSQLで合っているようでした。 一体なにが起きているんでしょうか??教えてください。

質問者が選んだベストアンサー

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

こんにちわ^^ できればもう少し情報をもらいたいのですが・・・。 テーブル構造(両方)と何が欠落したのかがほしいです^^ SQLは恐らくあってると思いますが・・。 select 請求明細.指定伝票番号, 請求明細.計 from 請求明細, 支払明細 where 請求明細.指定伝票番号 = 支払明細.指定伝票番号(+) もう少し情報をください^^

d-loop
質問者

お礼

ごめんなさい。私の勘違いみたいです。 金額が減っていたので、欠落していると思っていましたが、 件数は増えているので、マイナス金額が重複しているようです。 質問の内容が変わってしまうのですが、もしわかれば教えてください。 指定伝票番号が、請求明細テーブルにも、支払明細テーブルにも 複数ある場合、結合が重複してしまうのでしょうか?

その他の回答 (2)

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.3

横から失礼して・・・ テーブル名を見ると「請求明細」、「支払明細」なので、あくまでも請求 書の合計額ではなくて、明細記録が記録されているという前提で、 > 請求明細テーブルの全レコードと、支払明細テーブルの請求明細 > テーブルと一致するレコードだけを表示させたく、結合プロパテ > ィをそのように設定しました。 請求が無い支払いが存在しないと考えれば、請求明細の全レコードを表示させれば、結合プロパティを設定させる必要が無いような、気がするのですが・・・ 他に ・Select節で「支払明細」が関与をしてないこと ・明細同士の結合で重複して出てくること を考えると・・・単純に SELECT 請求明細.指定伝票番号 AS 請求伝票番号, Sum(請求明細.計) AS 請求書合計 FROM 請求明細 GROUP BY 請求明細.指定伝票番号; で、良いとかと言う、勘違いか・・・ 請求書があるのに、まだ支払っていない、支払い忘れてる、ってのを調べる気なら、 SELECT 請求明細.指定伝票番号, (SELECT Sum(Sub_請求.計) FROM 請求明細 As Sub_請求 GROUP BY Sub_請求.指定伝票番号 HAVING Sub_請求.指定伝票番号=請求明細.指定伝票番号) AS 請求合計, (SELECT Sum( Sub_支払.計) FROM 支払明細 As Sub_支払 GROUP BY Sub_支払.指定伝票番号 HAVING Sub_支払.指定伝票番号=請求明細.指定伝票番号) AS 支払合計 FROM 請求明細 GROUP BY 請求明細.指定伝票番号; と、不恰好な気がするけど何とか行けると思うけど・・・

d-loop
質問者

お礼

ありがとうございます。 ただ、請求明細にはあり、支払明細には無い場合もあり、請求額、支払額、差額の3項目を表示させたいので 結合させなくてはいけないのかと思いました。 データの欠落は、私の勘違いだったので、重複しているのは、クエリをもう一つ増やして、集計してから、結合させたら、うまくいきました。 ありがとうございました。

回答No.2

こんにちわ^^ 複数あるとはどのような事でしょうか? 請求明細 指定伝票番号      A000001      A000002      A000002      A000003 支払明細 指定伝票番号      A000001      A000001      A000002      A000004 見たいな事ですか? まずはprimary keyが何に指定してあるのかを教えてください^^ がんばって解決しましょう★

d-loop
質問者

補足

そういう感じです。 キーとしたいのは、指定伝票番号なんですが、それが重複してしまっています。 先に、集計をするなどして、指定伝票番号が重複しなくすればいいんでしょうか??

関連するQ&A

専門家に質問してみよう