0

実際、車両を予約するための SQL テーブルがあります。Time_From と Time_To を選択する必要があるフォームから車両を予約します。

ここに条項を入れる必要があります:-同じ日に車両の予約がすでにある場合、予約できる期間外の期間にその車両を予約することはできません。

以下の私の予約情報をご覧ください

ここに画像の説明を入力

u2ogq - クリックして次の画像...

特定の日付に車両が何回予約されているかわかりません。ユニークな日付のユニークな車両のすべての車両の予約を確認するにはどうすればよいですか。予約期間を確認する必要があります。特定の日付の特定の車両の行を数える必要があります。

ビークルのブーイング フォームにロジックを配置する方法のヒントを教えてください。

感謝

4

2 に答える 2

0

コメントで述べたように、次の 2 つのケースに関心があります。

ケース 1. 指定された車と日付について、車が利用可能かどうかを確認したい

    DECLARE @car VARCHAR(20) 
    DECLARE @From DATETIME
    DECLARE @To DATETIME

    SET @car = 'your car'
    SET @From = ..
    SET @To = ..

    SELECT CASE
        WHEN (
            SELECT COUNT(1) FROM booking 
                WHERE vehilce = @car
                AND (@From >= vehilce.From AND @From <= vehilce.To)
                OR (@T0 >= vehilce.From AND @T0 <= vehilce.To)
            ) >= 1 THEN "not available" 
        ELSE "available" 
        END

ケース 2. 特定の車について、車が予約されていない期間を取得したい

SELECT vehicle , previousTo ,nextFrom FROM
            (
                SELECT t1.vehicle AS vehicle, t1.From AS previosFrom, t1.To AS previousTo , t2.From AS nextFrom, t2.To AS nextTo 
                FROM booking t1
                JOIN booking t2 ON t1.vehicle,t2.vehicle OR t1.To < t2.From
                WHERE vehicle= @car
                GROUP BY vehicle, previosFrom, previousTo
                HAVING nextFrom = MIN (nextFrom)
            ) a 
于 2013-03-04T13:55:34.733 に答える
0

さて、その車両のその期間の予約を返すクエリを作成する必要があります。これはサブクエリとして知られています。サブクエリでは、「ベース」クエリの列からサブクエリに値を渡すことができます。サブクエリは行ごとに値を取得し、それらをパラメータとして使用して結果をフィルタリングしますはもともとアクセス用に作成されたものですが、MS-SQL も例外ではありません) これらが非常に役立つ状況はかなり少ないため、これらを理解するのに非常に役立ちます。お役に立てれば

于 2013-03-01T09:12:40.230 に答える