2011-03-29 87 views
1

我有三个表作为SQLITE3转储。比较多个Mysql表以找到修改的记录

产品,税收,库存

在这些表中准备一个CSV文件导入到Magento的产品部分。那部分结束了。

现在必须运行每日脚本来更新库存,税金和修改过的产品详细信息(SKU在任何情况下都不会更改)。

在此更新部分。 例如,我有12000条记录,其中只有400或1000条记录在库存表,税表,产品表中从最后一天的数据库变化/修改/更新。其余的行将保持不变。

因此,我添加了最后的日期表old_products,old_tax,old_inventory

并试图编写SQL查询来从表

两集的提取只修改的记录(注:这两套同一Db的可用表格)

请谁能帮助我如何通过比较两组表来编写一个sql查询来提取修改后的记录。

回答

1

我可能会改变这种模式。

我想有一个表,其中我将存储日期(或多个),当我上次导出数据到CSV(S):

CREATE TABLE CSVLastExported (
    ProductsExportDate datetime, 
    TaxExportDate datetime, 
    InventoryExportDate datetime 
) 

然后我可以在每三个中有一个时间戳列将保存上次修改时间戳的表格。我会触发更新该列。

然后查询另一个出口修改后的数据将作为CSVLastExported对相应列的LastModified列比较容易:

SELECT p.* 
FROM products p 
    INNER JOIN CSVLastExport e 
    ON p.LastModified > e.ProductsExportDate 
1

这给你所有的修改(和产品):

select * from products p inner join old_products o on p.id = o.id 

这种改性壳聚糖产品:

select * from products where id in (select id old_products) 
+0

在我看来,从我怎么读的问题,工作表总是包含所有的行。它们只与它们的'old_'对应不同,因为*行中的一些*被修改。而修改后的子集是OP想要从每个子集中提取的。 – 2011-04-20 21:06:34

+0

@andry ..完全。你是对的。那就是我必须要做的。而旧的数据库有8个表也新的数据库有8个。所以我很难正确编写连接查询。将解决这个问题,并在这里发布我的答案。 – Elamurugan 2011-04-21 06:56:32