0

これは私の最初の質問ですので、これを間違って行っている場合はご容赦ください。私は上記の問題についての質問を考えようとしてきましたが、どこにも行けないようです。

SELECT SUM(slots) AS totals,date 
  FROM 
     (
         SELECT start, end, date, slots 
           FROM 1000_appointments 
          WHERE date > NOW() AND HOUR(end) <= 12 AND employeeID='1000001'
     ) q 
 GROUP BY date HAVING totals < 6

これにより、スロットの合計が6未満の日が得られます。これはすばらしいことですが、その日付のすべての行と、可能であれば、テーブルにエントリがない日付も必要です。phpでソートとリストを行うことは可能ですが、mysql内でこれを行うためのよりエレガントな方法があるかもしれないと思いました。

これが問題を十分に説明していることを願っています。この背後にある理由は、「スロット」がまだ利用可能な日付、つまり予約されていない日付を見つける必要があるということです。

よろしくお願いします。

4

1 に答える 1

2

すべての行を取得するラッピング:

SELECT start, end, a.date, slots, totals 
        FROM 1000_appointments a
        JOIN
        (SELECT SUM(slots) AS totals,date
            FROM 1000_appointments 
            WHERE date > NOW() AND HOUR(end) <= 12 AND employeeID='1000001'
            GROUP BY date HAVING totals < 6
        ) t 
        where a.date = t.date

表にない日付を取得するのはそれほど簡単ではありません。おそらくカーソルを使用する必要があります。PHPコードでこれを行うことをお勧めします。

于 2012-05-28T12:29:17.753 に答える