php比较两个sql表并寻找差异

时间:2016-02-16 10:49:11

标签: php mysql database

我正在使用两张桌子:

  • worksheets通过AJAX自动更新
  • 由用户手动更新的
  • criter_live

所以,我的问题是,我想知道自动更新的表(worksheets)和手动更新表(machine_id)之间的差异。 entry_number和left_number在两个表中都相同,但是entry_dateleft_date& worksheets可能有所不同,因此我想要查询以了解criter_livecriter_live之间的差异。虽然,行不能在worksheets但在criter_live中,反之亦然。在这种情况下,我们将创建一条新记录,或者我们将从数据库中删除记录。

例如,我正在查看worksheets& entry_number ABC的worksheets,但left_date不包含最新的criter_live值(SELECT train_id FROM criter_live WHERE entry_date > $currentdate_today_midnight AND mac_id NOT IN (SELECT train_id FROM worksheets) 包含最新值)=>打印smth给我当前的用户。

我正在使用此查询(对于machine_id,对于left_date,对于entry_date):

machine_id

但它并不像我想的那样工作......在某些情况下它并没有按照我的意愿返回结果,我认为有一个问题但是......其实我可以在同一天有多个entry_number,但不一样left_numberentry_number ...我应该在两个表中都提到字段left_number& criter_live包含相同的值(除了明显不在其中一个基础中的缺失行外)。

在具体情况下,如果你不明白:   - 检查worksheetsleft_dateentry_number是否确定    worksheets与{db} criter_live的{​​{1}}不同(应用    工作表上的变化)

  • 检查criter_liveworksheetsentry_date是否确定 entry_number与{db} worksheets的{​​{1}}不同(应用 工作表上的变化)

  • 检查criter_livecriter_live:新的worksheets出现在 entry_number中未显示的criter_live:在worksheets中创建新行。

  • 检查worksheetscriter_liveworksheets没有 entry_number中显示较长的内容,但criter_live中存在{删除worksheets中的记录

谢谢

Db计划:

worksheets

+ ---------------------------------------------- ---------------------------------------- +

1 个答案:

答案 0 :(得分:0)

有很多案例没有解决这个问题,例如,如果有两条记录会发生什么,一条记录在my $rv; stdout_is { $rv = error_post( { message => 'foo' } ) } "foo", 'the error message is correct'; is $rv, 'expected', '... and the return value is too'; 而另一条记录在criter_liveworksheets匹配但entry_number没有?无论如何,我觉得解决这个问题不是在一个过于复杂的SQL查询中,而是在一个简单的PHP脚本中(我假设使用PHP是正常的,因为你在问题中包含了left_number标记)。

因此,以下是PHP将如何进行的伪代码。不打算成为易于运行的PHP,只是一个骨架:

php