0

クエリしたいサイトの詳細のリストがあります。データが欠落しているサイトのみを返します。選択したグループの情報のみを返すデータベースを照会する機能をユーザーに提供したいと考えています。

SELECT 
Lookup.Lookup_Name, 
Contacts.Address1, 
Contacts.Address2
FROM 
Contacts INNER JOIN Lookup ON Contacts.Group_1 = Lookup.Lookup_Code
WHERE (((Lookup.Lookup_Name)=[Site]) AND ((Contacts.Address1) Is Null)) OR (((Contacts.Address2) Is Null));    

ただし、これは選択したサイトからのデータではなく、すべてからのデータを返します。AND Or と関連する括弧の組み合わせだと思います。リストに追加するフィールドが他にもたくさんあるので、アドバイスをいただければ幸いです

4

1 に答える 1

1

残念ながら、MS-Access は括弧を非常に寛大に扱います。それらを配置しなくても、論理的に必要かどうかに関係なく、MS-Access はそれらを配置します。

ただし、クエリには論理的な誤りが 1 つあります。最初の lookup-condition はAND最初の address-empty-condition のみにリンクされ、2 番目の address-empty-condition は単純に によってリンクされてORいたため、空の address2 という結果につながりました。(すべてのサイトの)すべての行からフィールドが表示されました。

次のバージョンを試してください。

SELECT 
Lookup.Lookup_Name, 
Contacts.Address1, 
Contacts.Address2,
Contacts.further1,
Contacts.further2,
Contacts.further3   -- and so on ...
FROM 
Contacts INNER JOIN Lookup ON Contacts.Group_1 = Lookup.Lookup_Code
WHERE ((Lookup.Lookup_Name)=[Site]) 
AND (  ((Contacts.Address1) Is Null) 
    OR ((Contacts.Address2) Is Null)
    OR ((Contacts.further1) Is Null)
    OR ((Contacts.further2) Is Null)
    OR ((Contacts.further3) Is Null)
    );

現在、コンピューターに MS-Access がインストールされていないため、上記はまだテストされていません。うまくいくことを願っています。

于 2013-07-30T13:22:19.243 に答える