【发布时间】:2018-06-19 15:57:05
【问题描述】:
我确信有一种简单的方法可以做到这一点,但我什至想不出如何准确地描述我想要做什么,所以我无法谷歌它。我的实际情况比这稍微复杂一些,但一个非常基本的版本将有两个单独的表格 - 一个显示购买公共汽车票的人的姓名和日期,另一个显示乘坐公共汽车的人的姓名和日期公交车,像这样
tableTicket tableTravel
custName ticketDate custName travelDate
-------- ---------- -------- ----------
tim 01-jul-15 tim 01-jul-15
tim 03-jul-15 tim 02-jul-15
anna 15-jul-15 tim 03-jul-15
anna 16-jul-15 anna 15-jul-15
anna 20-jul-15 anna 16-jul-15
emily 02-jul-15 rob 07-jul-15
rob 07-jul-15 rob 12-jul-15
rob 12-jul-15 rob 13-jul-15
我只想返回没有机票旅行的人的姓名和日期,而不是那些买了机票但没有旅行的人。所以我想在 15 年 7 月 2 日返回蒂姆的旅程,而不是 15 年 7 月 2 日返回艾米丽未使用的机票。
我遇到的问题是,我不能只查找出现在 ticketDate 中的 travelDate 的日期,因为这样它将把 tim 的旅程与 emily 的机票相匹配。
我认为最好的方法是使用连接,但我不确定如何。如果我加入 custName,它会创建一行,其中 tim 购买机票并于 15 年 7 月 1 日旅行(这很好),但也会创建一行,他在 15 年 7 月 1 日购买机票并于 7 月 2 日旅行-15.
理想情况下,我想最终得到一张这样的桌子,但我不知道如何到达那里
custName ticketDate travelDate
-------- ---------- --------
tim 01-jul-15 01-jul-15
tim NULL 02-jul-15
tim 03-jul-15 03-jul-15
anna 15-jul-15 15-jul-15
anna 16-jul-15 16-jul-15
anna 20-jul-15 NULL
emily 02-jul-15 NULL
rob 07-jul-15 07-jul-15
rob 12-jul-15 12-jul-15
rob NULL 13-jul-15
然后我可以选择ticketDate IS NULL 所在的所有行,它会为我提供 Tim 和 Rob 在没有票的情况下所进行的旅程的详细信息。
抱歉,如果我完全看错了树。我敢肯定这很容易,但我就是想不通。
【问题讨论】:
-
请向我们提供创建和插入语句
-
对不起,我不确定你的意思——我在上面输入的数据库实际上并不存在,我只是编造它,因为它更清楚地解释了我想要什么比我使用我正在使用的实际数据库做的更好,它充满了各种其他 gumpf。
-
你解释清楚了。为了测试我们的查询,我们需要 DDL 和 insert 语句。
-
真的很抱歉,我不知道你的意思。 (我对此很陌生)
-
@themightyshrub 除非您提供数据供我们测试,否则没有人会帮助您。学习如何提问。 stackoverflow.com/help/how-to-ask
标签: sql sql-server sql-server-2008 tsql