0

私は次のデータベース設計を持っています:

Users Table: NetworkID, Name, BadgeNo, DepartmentCode
Events Table: ID, Title, Description, Location, StartDateTime, EndDateTime, NumberOfSeats, IsActive
BookingDetails Table: BookingID, EventID, NetworkID

各イベントの座席数、予約数、残りの(または空いている)座席数を示すクエリを考え出す必要があります。座席数と予約数を示すクエリを作成しました。ここで、(座席数-予約数)に等しい残りの(または空いている)座席数を見つける必要があります。それで、この要件を見つけるためにそれを修正するのを手伝ってくれませんか?

私の質問:

SELECT     dbo.Events.Title, dbo.Events.Description, dbo.Events.Location, dbo.Events.NumberOfSeats, COUNT(DISTINCT dbo.BookingDetails.NetworkID) 
                      AS [Number of Bookings]
FROM         dbo.BookingDetails INNER JOIN
                      dbo.Users ON dbo.BookingDetails.NetworkID = dbo.Users.NetworkID RIGHT OUTER JOIN
                      dbo.Events ON dbo.BookingDetails.EventID = dbo.Events.ID
WHERE     (dbo.Events.IsActive = 1)
GROUP BY dbo.Events.Title, dbo.Events.Description, dbo.Events.Location, dbo.Events.NumberOfSeats
4

2 に答える 2

2
SELECT     dbo.Events.Title, dbo.Events.Description, dbo.Events.Location,
           dbo.Events.NumberOfSeats, COUNT(DISTINCT dbo.BookingDetails.NetworkID) AS [Number of Bookings],
           dbo.Events.NumberOfSeats - COUNT(DISTINCT dbo.BookingDetails.NetworkID) AS RemainingSeats
FROM         dbo.BookingDetails INNER JOIN
                      dbo.Users ON dbo.BookingDetails.NetworkID = dbo.Users.NetworkID RIGHT OUTER JOIN
                      dbo.Events ON dbo.BookingDetails.EventID = dbo.Events.ID
WHERE     (dbo.Events.IsActive = 1)
GROUP BY dbo.Events.Title, dbo.Events.Description, dbo.Events.Location, dbo.Events.NumberOfSeats
于 2012-08-14T06:28:40.990 に答える
0
SELECT result.t, result.d, result.l, result.c, result.r, result.c-result.r
 FROM (SELECT     dbo.Events.Title t, dbo.Events.Description d, dbo.Events.Location l, dbo.Events.NumberOfSeats c, COUNT(DISTINCT dbo.BookingDetails.NetworkID) r                       AS [Number of Bookings] FROM         dbo.BookingDetails INNER JOIN                       dbo.Users ON dbo.BookingDetails.NetworkID = dbo.Users.NetworkID RIGHT OUTER JOIN                       dbo.Events ON dbo.BookingDetails.EventID = dbo.Events.ID WHERE     (dbo.Events.IsActive = 1) GROUP BY dbo.Events.Title, dbo.Events.Description, dbo.Events.Location, dbo.Events.NumberOfSeats) result

このクエリを試してください。

于 2012-08-14T06:31:22.620 に答える