我需要一个Access查询来返回购买了多种产品类型的客户订单。

时间:2016-12-29 21:38:14

标签: mysql ms-access ms-access-2016

我认为这很简单,我尝试了解决方案here,但无法使其工作Count(Distinct)在访问中显然不起作用。所以这是我的相关结构:

带有字段ID(主键),fldOrderNumber,ProductID和fldPurchaseDate的

tblMaster

tblProduct,包含字段ProductID(key)和fldProductName。

某些订单号将包含多个productID条目;因此,如果有人在一个订单中购买了3个产品,则tblMaster中将有3行具有相同的fldOrderNumber,但每行中的ProductID不同。我需要一个只返回那些fldOrderNumbers的查询.....所以基本上是非唯一的fldOrderNumbers。

1 个答案:

答案 0 :(得分:1)

我目前无法想到比这更简单的版本。对于较大的表格,这可能会非常慢。

SELECT A.*
FROM 
    tblMaster AS A 
LEFT JOIN 
    (
        SELECT DISTINCT 
            fldOrderNumber, 
            COUNT(*) AS [Count] 
        FROM 
            (
                SELECT DISTINCT 
                    fldOrderNumber, 
                    ProductID
                FROM 
                    tblMaster
            )
        GROUP BY 
            fldOrderNumber
    ) AS B 
ON 
    A.fldOrderNumber = B.fldOrderNumber
WHERE 
    B.Count > 1;