连接表时,某些条目的日期列为NULL


When joining tables, date column is NULL on some etries

我正在尝试将一些自定义CMS数据库迁移到Wordpress,到目前为止它一直是一个活生生的地狱。我正在使用WP所有导入插件,所以我需要一个整洁的单一。csv导出,其中包含来自此自定义cms数据库的多个表的数据。

那么,这些是我想要连接的两个表中的列:

`eo_items`
| cat_id | identificator      | create_date |
---------------------------------------------
|   1    | Title of the post  | 1283786285  |
`eo_items_trans`
| item_id | lid | name              | s_desc  | l_desc  |
---------------------------------------------------------
|    1    |  33 | Title of the post | excerpt | content |

期望的结果应该是:

| item_id | lid | name              | s_desc  | l_desc  | cat_id | create_date |
--------------------------------------------------------------------------------
|    1    |  33 | Title of the post | excerpt | content |    1   | Some date   |

下面是我使用的脚本:

SELECT DISTINCT 
eo_items_trans.item_id, 
eo_items_trans.lid, 
eo_items.cat_id, 
DATE_FORMAT(    eo_items.create_date,  '%d.%m.%Y' ) create_date, 
eo_items_trans.s_desc, 
eo_items_trans.l_desc, 
eo_items_trans.name
FROM eo_items_trans
LEFT JOIN eo_items ON ( eo_items_trans.name = eo_items.identificator ) 

这个代码的问题是,在结果表一些日期列是NULL,我不知道如果结果是我需要的,因为表有大约2000行,我不知道如何交叉检查类别id是否正确填充。

这是我第一次用MySQL做这样的事情,所以我真的不确定这个过程是否适合我想要实现的目标。

如果你需要澄清,请问。

编辑:

eo_items表比eo_items_trans表多300行,所以eo_items_trans表中没有相应的记录。我猜这应该反映在查询,以及?

由于您使用的是LEFT JOIN,因此对于eo_items_trans中没有oe_items条目的任何行,将返回NULL s。这可能意味着eo_items.identificator为空,或者与名称不完全匹配(大小写敏感)。

您必须调查并清理eo_items_trans中缺少eo_items中预期行的数据。

您的NULL结果似乎来自eo_items_trans记录,在eo_items表中没有相应的条目,或者来自eo_items记录,其中create_date为NULL。

您可以通过执行以下操作轻松地交叉检查检查

eo_items_trans中是否有记录在eo_items中没有对应的条目:

 SELECT DISTINCT eo_items_trans.name FROM eo_items_trans
 where NOT EXISTS (
                   SELECT * FROM  eo_items 
                   where eo_items.identificator = eo_items_trans.name
                  )

如果这产生更多的行,那将是eo_items_trans.name记录,而在eo_items中没有对应的记录。如果这是您的问题,请在主查询中执行JOIN,而不是左连接

对于eo_items中的空日期,您可能需要这样检查

 SELECT * from eo_items WHERE create_date IS NULL

如果你在这里找到记录,这就是你在主查询中的NULL值来自