0

まず、SQLの基本的なことしか知りません。プログラムの実装方法について助けが必要です。Drivers と Cars という 2 つのテーブルを作成しました。IDDriver IDCar このシナリオの実装方法についてサポートが必要です。

1 つのシフトの作成、更新、および削除のためのストアド プロシージャを作成する必要があります。1 日は 2 シフトでなければなりません。1 台の車で 2 シフトを行いますが、運転手は 1 人のみです。

何か助けはありますか?

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 に答える