マイクエリ
SELECT RoomType, date FROM Superior WHERE (date >= '2012-06-26'AND date < '2012-06-30')AND (Avail > '0')
UNION
SELECT RoomType, date FROM Deluxe WHERE (date >= '2012-06-26'AND date < '2012-06-30')AND (Avail > '0')
UNION
SELECT RoomType, date FROM SuperDeluxe WHERE (date >= '2012-06-26'AND date < '2012-06-30')AND (Avail > '0')
ORDER BY date
HAVING COUNT(date, INTERVAL 3 DAY)
' の近くで構文エラーを取得していますHAVING COUNT(date, INTERVAL 3 DAY)
私の目標は、日付とアベイルズが 3 日を超える部屋タイプの結果を取得することです
** スーペリアおよびデラックスの表では、2012 年 6 月 29 日の日付が Avail=0 で、SuperDeluxe の日付はすべて Avail です。
この場合、私の結果は SuperDeluxe を Availability としてのみ表示するはずですが、
**RoomType** **date**
Superior 2012-06-26
Superior 2012-06-27
Superior 2012-06-28
Deluxe 2012-06-26
Deluxe 2012-06-27
Deluxe 2012-06-28
SuperDeluxe 2012-06-26
SuperDeluxe 2012-06-27
SuperDeluxe 2012-06-28
SuperDeluxe 2012-06-29
はい、それはMySQLです。私は、叔父を助けてこれを成し遂げることができることを自分自身に証明しようとしています. ご存知のように、私は初心者ではありません。ご想像のとおり、3 つのテーブルはすべてあいまいです。利用可能な部屋の数を追跡する別のフィールド Avail があります。予約が完了すると、利用可能な部屋が自動的に計算されます。
私の現在のクエリは、各クエリの部屋タイプの空室状況のみを生成できる部屋タイプのオプション選択を使用しています。上記では、1 つのクエリを使用して、日付範囲で利用可能な任意の部屋タイプを生成することを計画しました。上記のユニオン クエリを使用するときに発生する問題は、得られる結果に、可用性が = 0 である範囲内の日付の 1 つも含まれます。
私はこのようなことを試みていました
SELECT RoomType, COUNT( date )
FROM Superior
WHERE date >= '2012-06-26'
AND date < '2012-06-30'
AND Avail > '0'
UNION
SELECT RoomType, COUNT( date )
FROM Deluxe
WHERE date >= '2012-06-26'
AND date < '2012-06-30'
AND Avail > '0'
UNION
SELECT RoomType, COUNT( date )
FROM SuperDeluxe
WHERE date >= '2012-06-26'
AND date < '2012-06-30'
AND Avail > '0'
GROUP BY date
HAVING COUNT( 4 )
近づいているように見えます。MAX( date ) を試してみましたが、4 行の日付が表示されますが、Avail が 0 を超える部屋タイプの 1 行が表示されます
私も試してみました HAVING COUNT( DISTINCT date ) =4 結果はまだ4に等しくない行のフィールド日付を表示します