在interval sql中插入datetime字段而不重复

时间:2017-12-30 11:52:56

标签: mysql sql mysqli

我有电视节目表,在这张表中有列,一个用于开始时间,一个用于结束时间。如果你想插入电视节目,你不能同时放2个电视节目,就像在真正的电视节目,我可以帮你做到这一点。感谢。

表格tvshows有列:tvshow_id,名称,描述,startime,整理时间。 我想通过表单插入信息,但如果已经有电视节目重叠另一个电视节目,你不能在数据库中插入,你需要改变时间。

我尝试解决这个问题:

$sql = "SELECT ...";
$result = mysqli_query ($link, $sql);

if(mysqli_num_rows($result) > 0) {
        echo "Change datetime";
    } else {

        $sql = "INSERT ...";
    }

1 个答案:

答案 0 :(得分:0)

首先:最好在你的桌子上放Priority,它可以帮助你订购电视节目。您可以使用此字段轻松控制重叠。

假设你有:

tvshows表

tvshow_id, name, description, startime, finishingtime

并且您插入的所有tvshows条记录都没有重叠。

您的新记录(包含newStarttimenewFinishingtime)不应与任何现有记录重叠。

解决方案1 ​​: 您的新记录应该是现有记录范围的外部范围。

Select * from tvshows t
Where (newStarttime>=t.finishingtime AND newFinishingtime>t.finishingtime) OR
      (newFinishingtime<=t.starttime AND newStarttime<t.starttime )

解决方案2 : 所以你应该检查这些条款:

  1. 状态1:newStarttime不应 任何记录的范围。
  2. NOT(newStarttime>=t.strattime AND newStarttime<t.finihingtime)

    1. Satate 2:newFinishing时间不应该在任何记录的范围内。
    2. NOT(newFinishing >t.strattime AND newFinishing <=t.finihingtime)

      1. 状态3:您的新范围不应与现有范围重叠
      2. NOT(newStarttime<t.strattime AND newFinishing >t.finihingtime)