我正在尝试将一些自定义CMS DB迁移到Wordpress,到目前为止,它一直是一个活生生的地狱。 我正在使用WP All导入插件,所以我需要一个整齐的单个.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
中没有相应的记录。我猜这应该反映在查询中?
答案 0 :(得分:3)
由于您使用的是LEFT JOIN
,因此NULL
的任何eo_items_trans
行都会在oe_items
中没有条目的情况下返回eo_items.identificator
。这可能意味着eo_items_trans
为空,或者与名称不完全匹配(区分大小写将适用)。
您必须调查并清除eo_items
中错过{{1}}中预期行的行的数据。
答案 1 :(得分:1)
您的日期结果似乎来自或来自eo_items表中的eo_items_trans记录或者create_date为空的eo_items记录。
您可以通过执行以下操作轻松进行交叉检查
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,而不是LEFT联接
至于eo_items中的空日期,您可能需要像这样检查
SELECT * from eo_items WHERE create_date IS NULL
如果您在此处找到记录,则主查询中的NULL值来自