2016-01-28 40 views
0

我需要回答的問題如下:找到客戶(或客戶,如果配合),誰已完成最多不同類別的訂單。選擇訂單中類別種類最多的客戶

這些都是我的表:

產品:

CREATE TABLE Products (
PROD_ID NUMBER NOT NULL , 
"CATEGORY" NUMBER NOT NULL REFERENCES Categories, 
TITLE VARCHAR (40) NOT NULL, 
ACTOR VARCHAR (40) NOT NULL, 
PRICE VARCHAR (40) NOT NULL, 
PRIMARY KEY (PROD_ID)); 

OrderLines:

CREATE TABLE Orderlines (
ORDERLINEID NUMBER NOT NULL, 
ORDERID NUMBER NOT NULL REFERENCES Orders, 
PROD_ID NUMBER NOT NULL REFERENCES Products, 
QUANTITY NUMBER NOT NULL, 
ORDERDATE VARCHAR2 (80) NOT NULL, 
PRIMARY KEY (ORDERLINEID,ORDERID)); 

客戶:

CREATE TABLE Customers (
CUSTOMERID NUMBER NOT NULL, 
FIRSTNAME VARCHAR2 (20) NOT NULL, 
LASTNAME VARCHAR2 (20) NOT NULL, 
ADDRESS1 VARCHAR2 (40) NOT NULL, 
ADDRESS2 VARCHAR2 (40), 
CITY VARCHAR2 (20) NOT NULL, 
STATE VARCHAR2 (20) NOT NULL, 
ZIP VARCHAR2 (20) NOT NULL, 
COUNTRY VARCHAR2 (20) NOT NULL, 
REGION VARCHAR2 (20) NOT NULL, 
EMAIL VARCHAR2 (20) NOT NULL, 
PHONE VARCHAR2 (20) NOT NULL, 
CREDITCARDTYPE VARCHAR2 (20) NOT NULL, 
CREDITCARD VARCHAR2 (20) NOT NULL, 
CREDITCARDEXPIRATION VARCHAR (10) NOT NULL, 
USERNAME VARCHAR2 (20) NOT NULL, 
"PASSWORD" VARCHAR2 (20) NOT NULL, 
AGE NUMBER NOT NULL, 
INCOME NUMBER NOT NULL, 
GENDER VARCHAR2 (8) NOT NULL, 
PRIMARY KEY (CUSTOMERID)); 

訂單:

CREATE TABLE Orders (
ORDERID NUMBER NOT NULL, 
ORDERDATE DATE NOT NULL, 
CUSTOMERID NUMBER NOT NULL REFERENCES Customers, 
NETAMOUNT NUMBER NOT NULL, 
TAX NUMBER NOT NULL, 
TOTALAMOUNT NUMBER NOT NULL, 
PRIMARY KEY (ORDERID)); 
+0

是您對MySQL或SQL Server的問題嗎? –

+0

對不起,這是oracle的 –

+0

你試過了什麼查詢? –

回答

0

嘗試:

Select * from 
(
Select C.CUSTOMERID, C.FIRSTNAME , C.LASTNAME, count(distinct P."CATEGORY") as Categories 
from Customers C 
inner join Orders O on O.CUSTOMERID =C.CUSTOMERID 
inner join OrderLines OL on O.ORDERID =OL.ORDERID 
inner join Products P on P.PROD_ID =OL.PROD_ID 
group by C.CUSTOMERID, C.FIRSTNAME , C.LASTNAME 
Order by count(P."CATEGORY") desc)A 
WHERE rownum = 1; 
+0

該查詢看起來不正確 - 乍一看,它只是計數類別的存在,而不是不同類別的數量。 –

+0

我加了截然不同的數字來區分不同的類別。 –

+0

這樣比較好:-) –