在我继续之前,我确实想说这是为了我的班级的家庭作业。我们在Microsoft中使用SQL。由于新冠肺炎和我的教授上个月开发了病毒,我们还没来得及深入研究SQL的工作原理。我还将提供一个ER图的图片,我有数据库,希望提供一个清晰的图片,我正在努力实现什么。https://imgur.com/a/4QGRgRc
现在我要解决的问题是:
到目前为止,我编写的代码如下
SELECT CUSTOMER.Phone_No, CUSTOMER.Address, RESERVATION.Reservation_No, INCLUDES.Check_in, ROOM.Room_No
FROM CUSTOMER, RESERVATION, INCLUDES, ROOM
SELECT CUSTOMER.Phone_No, WHERE CUSTOMER.Address = 'Tyler, Tx' AND INCLUDES.Check_in < '12/31/2019' AND INCLUDES.Check_in > '01/01/2020'我被困在现在该去哪里,或者即使到目前为止我所拥有的都会起作用。谁能给我一个正确的方向,我现在该去哪里?
发布于 2020-04-25 00:30:59
如果您只需要客户信息,请使用聚合查询。每个字段都必须包含在GROUP子句中:
SELECT Customer.ID, CustomerName, Phone_No FROM Customer INNER JOIN Reservation ON Customer.ID = Reservation.CustomerID WHERE Address = 'Tyler, Tx' AND Check_in BETWEEN #12/31/2019# AND #01/01/2020# GROUP BY Customer.ID, CustomerName, Phone_No HAVING Count(CustomerID) = 2;
或者利用嵌套查询和IN()函数的功能:
SELECT * FROM Customer WHERE Customer.Address = 'Tyler, Tx' AND Customer.ID IN (SELECT CustomerID FROM Reservation WHERE Check_in BETWEEN #12/31/2019# AND #01/01/2020# GROUP BY CustomerID HAVING Count(*) = 2);
或者使用DCount()。但是,域聚合函数会降低查询性能。
SELECT * FROM Customer WHERE Customer.Address = 'Tyler, Tx' AND DCount("*", "Reservation", "Check_in BETWEEN #12/31/2019# AND #01/01/2020# AND CustomerID=" & Customer.ID) = 2;
https://stackoverflow.com/questions/61419080
复制相似问题