2017-05-06 17 views
0

私は、course_id、room_id、day_id、time_from、time_toのような教室テーブルを割り当てています。phpmyadminでこの重複する行を避けるにはどうすればいいですか?

今私は

1行

cse101, 101 room, Saturday, 14:00, 16:00. 

私は新しいコースを割り当てよう次の時間があるとし...この時点で二時間を割り当てることを試みるすべてのコースに重ならないようにしたいです正確な部屋正確な日、15:00-18:00の間に私はあなたに新しいコースを割り当てることができないこの時間にメッセージを得るでしょう。すでに16時以降にあなたのコースを追加することができます。

私はPHPでそれをやりたい

...

私はそれをどのように行うことができますか?

+0

新しいエントリを挿入する直前に、そのルームの同じ時間枠にある既存のエントリを選択してみてください。それが行を返す場合は、新しいエントリを挿入しないでください。 – rickdenhaan

+0

しかし、このプロセスでは14:00 16:00は動作しますが、15:00-18:00どのように動作するのですか...私はその時間の間に尋ねました。 –

+0

http://stackoverflow.com/questions/30434839/mysql-insert-date-range-into-date-columns-if-dates-dont-overlap-with-existing/30437434#30437434 – Strawberry

答えて

2

次のようにオーバーラップするためのロジックである:最初の開始後に一方が第二の端部と第一の端部の前に開始したとき

select a.* 
from allocates a 
where a.day_id = $day_id and 
     a.room_id = $room_id and 
     a.time_from < $time_to and 
     a.time_to > $time_from; 

2つの期間が重なっています。

注:上記の例では変数を使用しましたが、適切なパラメータで変数をコーディングする必要があります。

+0

私はお試しいただきありがとうございます –

+0

ok働いた。私は答えを受け入れるのを忘れた。 –

関連する問題