Php 连接表时,某些度量上的日期列为空

Php 连接表时,某些度量上的日期列为空,php,mysql,wordpress,Php,Mysql,Wordpress,我正在尝试将一些定制的CMSDB迁移到Wordpress,到目前为止,这简直是个地狱。 我使用的是WP All导入插件,所以我需要一个整洁的.csv导出,其中包含来自这个定制cms数据库的多个表的数据 下面是我想连接的两个表中的列: `eo_items` | cat_id | identificator | create_date | --------------------------------------------- | 1 | Title of the post

我正在尝试将一些定制的CMSDB迁移到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\u items
表中的行数比
eo\u items\u trans
多约300行,因此其中有些记录在
eo\u items\u trans
中没有相应的记录。我猜这也应该反映在查询中?

因为您使用的是
左连接
NULL
s将为
eo\U项目
中没有条目的任何
eo\U项目
行返回。这可能意味着
EOU项目。identificator
为空,或与名称不完全匹配(区分大小写适用)


您必须调查并清理
eo_项目
中缺少
eo_项目
中预期行的
eo_项目

中的行的数据,因为您使用的是
左联接
eo_项目
中没有条目的任何
eo_项目
行都将返回
NULL
s。这可能意味着
EOU项目。identificator
为空,或与名称不完全匹配(区分大小写适用)


您必须调查并清理
eo\u items\u trans
中缺少
eo\u items

中预期行的数据。日期的空结果似乎来自eo\u items表中没有相应条目的eo\u items\u trans记录,或者来自创建日期为空的eo\u items记录

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

eo_项目中是否有记录在eo_项目中没有相应的条目:

 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中没有对应项。如果这是您的问题,则在主查询中执行联接,而不是左联接

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

 SELECT * from eo_items WHERE create_date IS NULL

如果在此处找到记录,则主查询中的空值来自

日期的空结果似乎来自eo_项目表中没有相应条目的eo_项目交易记录,或者来自创建日期为空的eo_项目记录

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

eo_项目中是否有记录在eo_项目中没有相应的条目:

 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中没有对应项。如果这是您的问题,则在主查询中执行联接,而不是左联接

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

 SELECT * from eo_items WHERE create_date IS NULL

如果您在这里找到记录,这就是主查询中的空值的来源

只有
create\u date
产生空值而没有其他列?其他一些列也一样,我编辑了这个问题,基本上
eo\u items
有更多的行
eo\u items\u trans
,然后您需要一个内部联接,而不是左联接。我想你不知道两者的区别是什么,所以你应该研究一下它们各自的作用。只有
create\u date
会产生null而没有其他列?其他一些列也一样,我编辑了这个问题,基本上
eo\u items
有更多的行
eo\u items\u trans
,然后你需要一个内部联接,而不是左联接。我假设您不知道两者的区别是什么,所以您应该研究它们各自的作用。因此,
SELECT*from eo_items WHERE create_date为NULL
不返回任何内容,
SELECT DISTINCT eo_items_trans.name WHERE note existent(SELECT*from eo_items WHERE eo_items.identificator=eo_items_trans.name)
给出语法错误。我只尝试了
JOIN
,但仍然得到了空值<代码>eo_项目
的行数比
eo_项目_trans
的行数多,所以是的,我想有些记录是不对应的。怎么办?@Bojana_uuuŠekeljić,也许eo_items.create_date中的dat字符串有点难以消化?如果在没有数据转换的情况下运行查询会怎么样?您是否仍然得到空值?@Bojana_uuŠekeljić,not exists查询中的synthax错误,您可以在此处转储完整错误吗?#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在“where NOT EXISTS”附近使用的正确语法(第2did行的SELECT*FROM eo_items'在没有数据转换的情况下,有些仍然为空,但比以前少了很多。以前大约有50%的条目是空的,现在大约为10%,
SELECT*FROM eo_items,其中create_date为空
不返回任何内容,
SELECT DISTINCE eo_items\u trans.name,其中不存在(从eo_项目中选择*,其中eo_项目标识器=eo_项目名称)
给出语法错误。我只尝试了
JOIN
,但仍然得到了空值。
eo\u items
的行数比
eo\u items\u trans
的行数多,所以是的,我知道有一些记录不对应。怎么做?@Bojana_uuuuuuŠekelji,可能eo\u items.create\u date中的dat字符串不可消化?如果u在不进行数据转换的情况下运行查询?是否仍为NULL?@Bojana_uuèekeljić,不存在查询中的Syntax错误,能否将完整错误转储到此处?#1064-您的SQL synt中有错误