1

それを機能させる唯一の方法は、3つのフィールドで結合を残すことであるというクエリがあります。これらの3つのフィールドで通常の内部結合を行った場合、クエリは何も返しませんでした。しかし、個々の参加を個別に試してみると、ボブからボブ、書店から書店、パンからパンなど、すべてが期待どおりに参加します。

したがって、これら2セットのクエリ結果については...

1.Manager  1.Shop     1.Product  1.Cost     2.Manager  2.Shop     2.Product   2.Quantity
Bob        Hardware   Spanners    15        Bob        Hardware   Spanners     3
Terry      Food       Bread       12        Terry      Food       Bread        4
Sue        Bookshop   Books       18        Sue        Bookshop   Books        7

...このクエリは結果を返しません:

SELECT 1.Manager, 1.Shop, 1.Product, 1.Cost, 2.Quantity
FROM 1 INNER JOIN 2 ON 1.Manager = 2.Manager AND 1.Shop = 2.Shop AND 1.Product = 2.Product;

テキストに参加するのは理想的ではないことは知っていますが、これら3つのフィールドに問題なく参加する同様のクエリがあるので、それが私が遭遇したAccessの「機能」なのか、それとも問題になる可能性があるのか​​疑問に思いました。データ?

-編集-

代わりにJOIN条件をWHERE句に入れることにより、WHERE 1.Manager = "Bob" AND 2.Manager = "Bob:

WHERE 1.Product = "Spanners"

単独で動作し、次のようになります。

WHERE 2.Product = "Spanners"

単独で動作しますが、2つを組み合わせます。

WHERE 1.Product = "Spanners" AND 2.Product = "Spanners"

再び何も返しません!

-編集2-

メインクエリは、テーブル内のデータを参照しているときに実際に正しく動作します。したがって、基本クエリが結果を返す方法に奇妙なことがあるかもしれません。

-編集3-

これは問題の例へのリンクです:[リンクが削除されました]

01トップレベルのクエリ:これらは両方とも同じですが、1つはテーブルを参照し、機能します。もう1つはクエリを参照しており、機能しません。クエリバージョンが機能しない理由を知りたい。

02第2レベルのクエリとテーブル:データの各セットには2つのバージョンがあります。1つはクエリで、もう1つはクエリのMakeTableバージョンを使用して作成されたテーブルです。私の知る限り、どちらも同じです。

03および04レベルのクエリ:これらは、第2レベルのクエリを構成する低レベルのクエリです。

テーブル:これらは、他のすべてのクエリの基礎となるベーステーブルです。

4

3 に答える 3

2

OK、それで私はあなたのデータベースをダウンロードして見てみました。NumStoresクエリを最初に内部結合に配置すると、レコードが返され、次に放棄された船が返されることがわかりました。厳しく聞こえたくはありませんが、データベース設計が貧弱な道を進んでいるので、これ以上先に進むことはできません。問題を引き起こし続ける多くの問題の中には、次のようなものがあります。テーブルに主キーがない(いかなる種類のインデックスもない)。オブジェクト(クエリとテーブル)のわかりにくい命名規則。データは多くの異なるテーブルに複製されます(正規化違反)。メインクエリに埋め込まれたサブクエリ。Accessを使用して支援したい場合は、Accessの使用方法を学ぶ必要があります。

于 2013-02-08T19:35:17.800 に答える
1

ちなみに、同様の問題を抱えているこの質問を誰かが見た場合、メインクエリに入力されたクエリの1つは、その特定のクエリのどこにも表示されなかったフィールドにグループ化されていました。Group By句からそのフィールドを削除すると、メインクエリが期待した結果を返しました。

クエリが本質的にまったく同じ結果を異なる動作で返していたのは奇妙なことですが、そこに行きます。

于 2013-02-11T09:54:53.150 に答える
1

将来、ここでも同じ問題が発生しました(2017年、Access 2010)。何らかの理由で、Left Joinは機能し、Inner Joinがもたらしたのとまったく同じ結果をもたらし、不思議なことに停止しました。「2013年2月11日9時54分」というメッセージの後で、結合されたクエリの1つがGroup Byフィールドを2倍にして表示されていないことに気付いたので(その理由はありません)、それらを削除しました。機能した。Accessは、表示されないGroup Byフィールドを再作成しましたが、2倍にはなりませんでした。これが、(バグ?)問題でした。

于 2017-03-23T15:22:16.717 に答える