首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据给定的问题和到目前为止的情况完成代码?

如何根据给定的问题和到目前为止的情况完成代码?
EN

Stack Overflow用户
提问于 2020-04-24 23:40:48
回答 1查看 49关注 0票数 0

在我继续之前,我确实想说这是为了我的班级的家庭作业。我们在Microsoft中使用SQL。由于新冠肺炎和我的教授上个月开发了病毒,我们还没来得及深入研究SQL的工作原理。我还将提供一个ER图的图片,我有数据库,希望提供一个清晰的图片,我正在努力实现什么。https://imgur.com/a/4QGRgRc

现在我要解决的问题是:

  1. 检索住在德克萨斯州泰勒的客户的电话号码,他于2020年1月1日预订了两间客房。

到目前为止,我编写的代码如下

代码语言:javascript
复制
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'

我被困在现在该去哪里,或者即使到目前为止我所拥有的都会起作用。谁能给我一个正确的方向,我现在该去哪里?

EN

回答 1

Stack Overflow用户

发布于 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;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61419080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档