sql >> データベース >  >> RDS >> Mysql

MySQLは最初に利用可能な週末を見つけます

    他の人は質問を見逃していると思います...彼らはあなたのテーブルがすでに週末中ずっと人気があり、開いているかどうかのステータスがあるかもしれないと思っています...私の推測ではあなたのテーブルは予約されている場合にのみレコードを持っています...したがって、自動化された日付の検索に基づいて、まったく存在しないレコードを見つける必要があります...

    これは、私が行った別の投稿の変更ですこちら

    クエリのコンテキストは変更しませんでしたが、テーブルに関連付けられている列のみを入力しました。私はあなたが単一の会場テーブルに反対しているだけだと理解しています、そして私も(実際には)そうです。ただし、「JustDates」エイリアスを理解するために、このINNER PRE-QUERYは、他のテーブルに対してデカルト結合を実行することにより、動的に入力されたすべての日付のテーブルを作成しています。この場合、予約の「Venue」テーブル(私はしませんでした)実際のテーブル名の参照を明示的に確認するため、変更する必要があります)。したがって、これは本質的に、「今日」から始まり、30日間(制限を介して)進むすべての日付のテーブルを作成しますが、40、50、300、または必要な数だけにすることができます。「YourVenueTable」があれば少なくともテストしたい日数のレコードがあります。 (これは、投稿の同じ説明から導き出されました)。この結果セットは30、40、または何日も前もってフィルタリングされ、特定の曜日の1日曜日または7日土曜日のみになります...したがって、4月23日、4月24日、4月の結果セットのみが返されます。 5月30日、5月1日、5月7日、5月8日、5月14日、5月15日、5月21日、5月28日など。

    これで、前進を検討しているすべての可能な日の動的に作成された結果セットができました。これで、実際のVenue Reservationsテーブルに結合され、問題のid_venueで見つからない日付のみを返すようにフィルタリングされます。データの例では、4月23日と24日に一致するものが見つかり、それらのレコードは返されません。 4月30日と同じ...ただし、5月1日を含む事前予選リストのレコードでは、会場テーブルで日付の一致が見つからないため、予想どおりに日付が一致することがわかります...その後スキップし続けます5月7日と8日、その後5月14日、15日、21日、28日などに戻ります...

    select JustDates.OpenDate
      from 
          ( select
             @r:= date_add( @r, interval 1 day ) OpenDate
          from
             ( select @r := current_date() ) vars,
             Venue 
          LIMIT 30 ) JustDates
       where
          DAYOFWEEK( JustDates.OpenDate ) IN ( 1, 7 )
          AND JustDates.OpenDate NOT IN
              ( select Venue.date
                    from Venue
                    where Venue.id_venue = IDYouAreInterestedIn
                      and Venue.Date = JustDates.OpenDate )
        order by 
           JustDates.OpenDate
    

    注意してください、そして他の予約の投稿に従って、上記の30の制限を行う予約日の利用可能日のクエリは、予約を楽しみにしたい日数が少なくともある限り、システム内の任意のテーブルにすることができます。 。来年のすべての可用性が必要な場合は、デカルト結果に使用されるテーブル内の365レコードで、動的に作成された「日付」レコードを循環する@rを取得する必要があります。



    1. Postgresqlは、特定の合計金額に達するまで選択します

    2. MySQLビューの作成、ビューの置換、およびビューステートメントの削除を例に

    3. SQLAlchemyはMySQLのテキストにどの列タイプを使用しますか?

    4. JSON_DEPTH()–MySQLでJSONドキュメントの最大深度を検索します