0

首先,我对 sql 的了解不多,只有基本的东西。我需要有关如何实施程序的帮助。我创建了两个表:Drivers 和 Cars。IDDriver IDCar 我需要有关如何实现此场景的帮助:

我需要创建存储过程:创建、更新和删除一个班次。一天必须两班倒:两班一车,一班司机。

有什么帮助吗?

4

1 回答 1

0

我想你想要一个这样的模式

CREATE TABLE [Driver]
(
      [Id] INT IDENTITY(1,1) PRIMARY KEY
    , [Name] NVARCHAR(50) NOT NULL
)

CREATE TABLE [Car]
(
      [Id] INT IDENTITY(1,1) PRIMARY KEY
    , [Registration] NVARCHAR(14) NOT NULL
)

CREATE TABLE [ShiftType]
(
      [Id] INT IDENTITY(1,1) PRIMARY KEY
    , [StartTime] TIME NOT NULL
    , [StartDayOfWeek] TINYINT NOT NULL
    , [EndTime] TIME NOT NULL
    , [EndDayOfWeek] TINYINT NOT NULL
)

CREATE TABLE [Shift]
(
      [Id] INT IDENTITY(1,1) PRIMARY KEY
    , [DriverId] INT NOT NULL REFERENCES [Driver]([Id])
    , [CarId] INT NOT NULL REFERENCES [Car]([Id])
    , [ShiftId] INT NOT NULL REFERENCES [Shift]([Id])
)

您可以像这样插入一些基本数据

INSERT [Driver] VALUES ('Bob')
INSERT [Car] VALUES ('ABC1234')
INSERT [ShiftType] VALUES ('08:00:00', 0, '20:00:00', 0)
INSERT [ShiftType] VALUES ('20:00:00', 0, '08:00:00', 1)
INSERT [Shift] VALUES (1, 1, 1)
INSERT [Shift] VALUES (1, 1, 2)

像这样拿出来

SELECT
              [D].*
            , [C].*
            , [ST].*   
    FROM
            [Shift] [S]
        JOIN
            [Driver] [D]
                ON [D].[Id] = [S].[DriverId]
        JOIN
            [Car] [C]
                ON [C].[Id] = [S].[CarId]
        JOIN
            [ShiftType] [ST]
                ON [ST].[Id] = [S].[ShiftTypeId]

这是小提琴


这应该为您提供一个很好的起点,让您自己尝试一些存储过程,并在结构良好的问题中发布任何尝试。

于 2012-10-22T16:42:01.493 回答