Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL内部连接问题_Php_Mysql_Sql_Database_Inner Join - Fatal编程技术网

PHP MySQL内部连接问题

PHP MySQL内部连接问题,php,mysql,sql,database,inner-join,Php,Mysql,Sql,Database,Inner Join,基本上我有两个表:节点和自然。节点有一个自动递增的ID,而大自然有一个“节点”列,这正是我在这里关注的。节点列包含节点表(nature条目所在的节点)中的ID分隔字符串 nature表中节点列的示例可能如下所示: .1.10.597.598.599.600. 例如,每个id的前后都有句点,因此我可以搜索节点中的所有图像(其中节点“% 也就是说,我正在尝试从节点表中选择所有在nature表中有条目的条目。这是我到目前为止得到的结果,但它返回一个空集 SELECT * FROM nodes A I

基本上我有两个表:节点和自然。节点有一个自动递增的ID,而大自然有一个“节点”列,这正是我在这里关注的。节点列包含节点表(nature条目所在的节点)中的ID分隔字符串

nature表中节点列的示例可能如下所示:

.1.10.597.598.599.600.
例如,每个id的前后都有句点,因此我可以搜索节点中的所有图像(其中节点“%

也就是说,我正在尝试从节点表中选择所有在nature表中有条目的条目。这是我到目前为止得到的结果,但它返回一个空集

SELECT *
FROM nodes A
INNER JOIN nature B
ON A.id LIKE '%.B.node.%'
任何帮助都将不胜感激。

请尝试:

SELECT *
FROM nodes A
INNER JOIN nature B
ON B.node LIKE CONCAT('%.',A.id,'.%')
请注意,这是相当昂贵的,因为它阻止了任何索引的使用

请参阅。

使用该功能


这不太管用。请注意,在搜索%.B.node.%时,这些句点非常重要,因为节点列由句点分隔。因此,当我搜索597的节点id时,它必须是%.B.node.%,因为597是用句点包装的。请参阅我提到的节点列示例。这有意义吗?是的,我刚刚注意到并加上了句号。遗憾的是,它仍然返回409248个结果,其中只有882个节点和464个自然条目。啊哈,它所做的就是为每个nod条目(882*464=409248)选择所有的自然条目。一开始我遗漏了一些东西。反过来说。这似乎有效。但为什么它返回4586个结果。。。只有882个条目包含自然条目。仍然返回一个空集。正如我在其他注释中所说,句点需要环绕节点id,因为它们是分隔符。我可以更新它们,但如果返回的是空集,您可能还需要确保数据存在。数据存在。大多数节点都有自然条目。
ON A.id LIKE CONCAT('%.',B.node,'.%')