0

我尝试解决这个查询。

编写和测试 SQL 以创建从未购买过的客户列表。

我这样创作

enter code here

SELECT DISTINCT CU.CustomerID
FROM  DD_Customers CU,DD_Orders O,DD_OrderLine OL
WHERE  CU.CustomerID = O.CustomerID
AND     O.OrderID = O.OrderID
AND ol.quantitypurchased > 1;

查询时不知道如何表达“从未购买过”

DD_客户

客户 ID、客户名称、客户名称、

12345

12346

12347

12348

12349

12350

所以我为这个查询创建了 CustomerID 12350,它没有出现在 DD_Orders

DD_Orders

OrderID,DATEPURCHASED,CustomerID,SALESMANID,METHODOFDELIVERY

DD_ORDERLINE

OrderID,PRODUCTID,ORDERDATE,数量,价格

我该怎么做这个查询

太感谢了。

4

3 回答 3

0
SELECT CU.CustomerID
FROM  DD_Customers CU,DD_Orders O,DD_OrderLine OL
WHERE  CU.CustomerID = O.CustomerID
AND     O.OrderID = OL.OrderID
GROUP BY CU.CustomerID HAVING sum(ol.quantitypurchased) = 0;
于 2013-11-03T01:38:01.197 回答
0

尝试这个:

CREATE TABLE dd_customers (
  customer_id NUMBER
);

CREATE TABLE dd_orders (
  customer_id NUMBER
);

INSERT INTO dd_customers VALUES (1);
INSERT INTO dd_customers VALUES (2);
INSERT INTO dd_customers VALUES (3);

INSERT INTO dd_orders VALUES (1);
INSERT INTO dd_orders VALUES (3);

SELECT DISTINCT ddc.customer_id
  FROM dd_customers ddc
    LEFT JOIN dd_orders ddo ON (ddc.customer_id = ddo.customer_id)
HAVING COUNT(ddo.customer_id) = 0
GROUP BY ddc.customer_id
;
于 2013-11-03T00:42:51.887 回答
0
SELECT CustomerID
FROM DD_Customers
WHERE CustomerId NOT IN (
    SELECT O.CustomerId
    FROM DD_Orders O
        JOIN DD_OrderLine OL ON O.OrderID = OL.OrderID
    WHERE ol.quantitypurchased > 1
)
于 2013-11-03T00:38:16.823 回答