我有以下表格:
CREATE TABLE CUSTOMERS
(customerID INT PRIMARY KEY,
customerFullName VARCHAR(20) NOT NULL);
CREATE TABLE VEHICLES
(vehicleVIN VARCHAR(25) PRIMARY KEY,
vehicleMake VARCHAR(15) NOT NULL);
CREATE TABLE SALES
(saleID INT PRIMARY KEY,
customerID INT,
vehicleVIN VARCHAR(25));
CONSTRAINT SALES_FK1 FOREIGN KEY (customerID) REFERENCES CUSTOMERS(customerID),
CONSTRAINT SALES_FK2 FOREIGN KEY (vehicleVIN) REFERENCES VEHICLES(vehicleVIN));
并构建以下查询以运行这些表:
SELECT VEHICLES.vehicleMake, CUSTOMERS.customerFullName
FROM SALES
JOIN CUSTOMERS on SALES.customerID = CUSTOMERS.customerID
JOIN(
SELECT SALES.vehicleVIN, VEHICLES.vehicleMake
FROM SALES
JOIN VEHICLES ON SALES.vehicleVIN = VEHICLES.vehicleVIN
GROUP BY SALES.vehicleVIN, VEHICLES.vehicleMake
HAVING COUNT(SALES.vehicleVIN) >= ALL
(SELECT COUNT(SALES.vehicleVIN)
FROM SALES
INNER JOIN VEHICLES ON SALES.vehicleVIN=VEHICLES.vehicleVIN
GROUP BY VEHICLES.vehicleMake))
VEHICLES ON SALES.vehicleVIN = VEHICLES.vehicleVIN
ORDER BY CUSTOMERS.customerFullName;
当我在SQL Fiddle中运行它时,它会完美地执行并提供正确的输出(一列显示购买最多的vehicleMake,另一列显示购买该vehicleMake的每个人的customerFullName)。
当我在NOVA(Oracle)中运行它时,它只是说“没有选择行”两者之间的语法是否存在差异?我需要更改我的代码吗?谢谢!
答案 0 :(得分:0)
回答自己。我在SQL Fiddle和NOVA之间的插入语句中略微不一致地提取数据。这个问题是我的错,从我现在所说的,一切都在按预期进行。
我在SQL小提琴中的插入语句重新使用了一些vehicleVIN数字,这有助于我编写的查询的成功,但是查询对于我想要完成的事情是不正确的。打开另一个问题来讨论这个具体问题。
结论:我不认为它们在NOVA DB语法和SQL Fiddle语法之间存在任何重大差异。一切都很好!