【问题标题】:HOW TO JOIN 2 tables in SQL Server 2008如何在 SQL Server 2008 中加入 2 个表
【发布时间】:2015-02-17 04:09:20
【问题描述】:

我有两张桌子dbo.seatdbo.booking

dbo.seat

noSeat
------
1-2
1-3
1-4
1-8
4-2
4-3
4-4
5-1
5-2

dbo.booking

noBooking   |  noSeat  | statusBooked |       endTime
1002           1-4            0         2015-02-16 13:30:00.000
1003           1-4            1         2015-02-17 13:30:00.000
1004           1-8            1         2015-02-17 13:30:00.000
1005           1-2            0         2015-02-16 14:59:00.000
1006           1-3            0         2015-02-16 14:59:00.000

没有预定的seat.noSeat怎么取?

此示例显示seat 号码 1-4 和 1-8 已预订。我想知道有什么座位可用(输出都是seat.noSeat,除了1-4和1-8)?

booking 用于预订交易,seat 是提供的座位列表。

更新:

当 endTime 等于 CurrentTime 时,statusBooked 将自动更新为 0。这意味着它已经结束并告诉我们1-4可用,直到有人再次预订(插入方法dbo.bookingstatusBooked默认为1)

【问题讨论】:

  • 在“noseat”上的两个表之间使用内连接并将“WHERE”子句添加为“StatusBooked 1”
  • 您有未预订座位的预订(statusBooked = 0)并且座位 1-4 既已预订又未预订?
  • @JamesZ 它的状态是该座位仍被预订或已可用。这意味着座位 1-4 已被某人预订,现在又被其他人预订。 0 可用 1 已预订
  • @PareshJ 我试试这个SELECT s.noSeat FROM seat s INNER JOIN booking b ON s.noSeat = b.noSeat WHERE b.statusBooked <> 1,结果就是预订表中的内容。
  • 我更新了我的问题

标签: sql-server sql-server-2008 join


【解决方案1】:
select *
from dbo.seat
where noseat not in (
    select noseat
    from dbo.booking
    where statusbooking = 1
)

这是我的猜测。我不能说我真的明白“noseat”是什么意思(除非它是“座位数”)?

【讨论】:

  • 座位数。是的,你是对的。有用。但是将来的任何情况都可以吗? @shwant00
  • 据我了解。如果有一行 statusBooking 等于 1,则该座位应从您的结果中排除。这几乎就是它所做的一切。
  • 您可能应该使用显式选择列表,但 c# 代码中肯定存在另一个问题。
  • 如果您仍然需要帮助,最好提供完整的错误消息。不过,这听起来像是一个单独的问题。
猜你喜欢
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 2014-07-17
相关资源
最近更新 更多