0

Access 2003 で、2 つのクエリを組み合わせて結果の違いを見つけるクエリを作成したいと考えています。

クエリ 1: [すべて]

SELECT mars.Name, mars.Location, mars.Business_Unit 
FROM mars 
GROUP BY mars.Name, mars.Location, mars.Business_Unit;

それは返す

Name   Location   Business Unit
-----  ---------  -------------
John   Sydney     AU
Grace  Brisbane   AU
Lee    Melbourne  GU

クエリ 2: [not_zero]

SELECT mars.Name, mars.Location, mars.Business_Unit 
FROM mars 
WHERE ((mars.orc)<>0) 
GROUP BY mars.Name, mars.Location, mars.Business_Unit;

戻り値:

Name   Location  Business Unit 
-----  --------  -------------
John   Sydney    AU
Grace  Brisbane  AU

作成しようとしているクエリ:

SELECT m.Name, m.Location, m.Business_Unit 
FROM 
    all AS m 
    LEFT JOIN 
    Not_Zero AS o 
        ON (m.Name=o.Name) 
            AND (m.Location=o.Location) 
            AND (m.Business_Unit=o.Business_Unit) 
GROUP BY m.Name, m.Location, m.Business_Unit;

クエリで次のことを達成したいと思います:

Name  Location   Business Unit 
----  ---------  -------------
Lee   Melbourne  GU

しかし代わりに、[all] クエリと同じ結果が得られます。

Name   Location   Business Unit
-----  ---------  -------------
John   Sydney     AU
Grace  Brisbane   AU
Lee    Melbourne  GU

さて、この [mars] テーブルは次のようなものです。

Name   Location   Business Unit  ORC
-----  ---------  -------------  ---
John   Sydney     AU             0
Grace  Brisbane   AU             5
John   Sydney     AU             10 
Grace  Brisbane   AU             0
Lee    Melbourne  GU             0
Lee    Paris      EU             0

私が達成しようとしているのは、 orc = 0 を持つ名前をずっと取得することです。つまり、たとえば、次のようにします。

Name  Location   Business Unit  ORC
----  ---------  -------------  ---
Lee   Melbourne  GU             0
Lee   Paris      EU             0
4

1 に答える 1

1

[not_zero] クエリ結果は常に [all] クエリ結果のサブセットであるため、この 2 つの間の「違い」は、[not_zero] に表示されない [all] の行です。次のクエリはそれらを見つけます。

SELECT all.*
FROM 
    all 
    LEFT JOIN 
    not_zero 
        ON (all.NAME=not_zero.NAME) 
            AND (all.LOCATION=not_zero.LOCATION) 
            AND (all.[BUSINESS UNIT]=not_zero.[BUSINESS UNIT])
WHERE 
    (not_zero.NAME Is Null) 
        AND (not_zero.LOCATION Is Null) 
        AND (not_zero.[BUSINESS UNIT] Is Null);
于 2013-10-18T14:07:56.907 に答える