【发布时间】:2020-06-29 09:06:18
【问题描述】:
对 SQL 和数据库相当陌生...。我有以下问题... 一家航运公司的数据库,这个问题的三个相关表是;
客户(客户 ID、姓名、地址等)
货件(ShipmentID、ScheduleName、DepartDate、ArriveDate、DepartPort、ArrivePort)
CustomerOrder(CustomerID、ShipmentID、Fee 等)
我需要展示 “所有未在特定年份下订单的客户,即 2019 年”我正在努力寻找正确的查询。我正在处理样本数据,数据库中有 8 个客户,其中 3 个有 2019 年出发的货物订单。因此,我希望得到的结果是剩余 5 个没有这些货物订单的客户的列表。
我可以轻松地显示已下订单和从未下过订单的客户,但我很难显示在特定时间范围内未下订单的客户。
任何想法或提示将不胜感激!
谢谢
编辑***
Desired Result - 显示发货日期为 2019 年的 5 位未下订单的客户
我试过了;
~ 从客户中选择客户 ID 左外连接客户订单 ON Customer.CustomerID = CustomerOrder.CustomerID 左外连接装运 ON CustomerOrder.ShipmentID = Shipment.ShipmentID WHERE shipping.DepartDate BETWEEN '2019-01-01' AND '2019-12-31' 并且 CustomerOrder.CustomerID 为空 ~
但是,这不会带来任何结果。
三个表有如下信息
客户 -(客户详细信息的简单表格)(客户 ID、姓名、地址、电话、类型、大小、注册时间)
Shipment -(详细说明每个计划的货件)(ShipmentID、ScheduleName、DepartDate、DepartPort、ArriveDate、ArrivePort、Season)
CustomerOrder -(详细客户订单,但不是订单上的单个商品)(OrderID、ShipmentID、CustomerID)
我不确定它的加入是否是问题所在?样本数据中有 2019 年出货 4 次,客户总数为 3 人。我需要显示在这些日期内未下订单的 5 位客户的 customerID。
我尝试了一些不同的查询,一直在网上搜索,但我是新手,不太确定我哪里出错了。我能够识别从未下过订单的客户,但我一添加日期范围就没有任何结果。
【问题讨论】:
-
编辑问题添加一些示例数据和所需的结果会有所帮助。
-
您尝试过什么,或者您进行了哪些研究但还没有理解?关于如何做这样的逻辑有很多。
LEFT JOIN是最常见的方式。 -
感谢已编辑问题以尝试更好地解释
标签: sql sql-server select where-clause