Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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 数据库查询的帮助_Php_Mysql_Database - Fatal编程技术网

Php 数据库查询的帮助

Php 数据库查询的帮助,php,mysql,database,Php,Mysql,Database,所以我建立了一个分类表。在这个表中有一个名为“id”、“name”、“fk_parent_cat_id”(以及更多)的字段。“fk_parent_cat_id”基本上只是将一个特定类别与一个父类别相关联 嗯。也就是说,我如何进行一个查询,既获取类别的信息,又获取父类别的信息。我主要关心的是,现在我只获取父类id,这很好,但我不想运行另一个查询来识别父类的名称 正常的查询结果类似于: id: 2 name: category 1 fk_parent_cat_id: 1 我希望结果是 id: 2

所以我建立了一个分类表。在这个表中有一个名为“id”、“name”、“fk_parent_cat_id”(以及更多)的字段。“fk_parent_cat_id”基本上只是将一个特定类别与一个父类别相关联

嗯。也就是说,我如何进行一个查询,既获取类别的信息,又获取父类别的信息。我主要关心的是,现在我只获取父类id,这很好,但我不想运行另一个查询来识别父类的名称

正常的查询结果类似于:

id: 2
name: category 1
fk_parent_cat_id: 1
我希望结果是

id: 2
name: category 1
fk_parent_cat_id: 1
fk_parent_cat_name: top category
这个问题有意义吗?我想有一种方法可以通过某种连接来实现这一点


谢谢你的任何意见

您可以通过内部联接来实现这一点。只需确保表和外键列的名称与数据库中的实际名称相同(因为您没有提供有关ParentCategory表中列名的信息)。请记住,如果您只有一个类别表(即所有类别都存储在一个表中),那么针对同一个表进行自连接没有什么错——您只需要在查询中为表名添加别名,以确保它们不会模棱两可

SELECT
     C.id
,   C.name
,   C.category
,   P.parent_cat_name   
FROM
    ChildCategory C
INNER JOIN
    ParentCategory P
ON
    C.fk_parent_cat_id = P.parent_cat_id

您可以通过内部联接来实现这一点。只需确保表和外键列的名称与数据库中的实际名称相同(因为您没有提供有关ParentCategory表中列名的信息)。请记住,如果您只有一个类别表(即所有类别都存储在一个表中),那么针对同一个表进行自连接没有什么错——您只需要在查询中为表名添加别名,以确保它们不会模棱两可

SELECT
     C.id
,   C.name
,   C.category
,   P.parent_cat_name   
FROM
    ChildCategory C
INNER JOIN
    ParentCategory P
ON
    C.fk_parent_cat_id = P.parent_cat_id

假设我理解正确,这是一个基本连接

SELECT id, fk_parent_cat_id, fk_parent_cat_name 
FROM table, parent_table 
WHERE table.id = parent_table.id;
由于没有正确的表名,请使用正确的表名进行修复,这还假定父表中的主键也被称为“id”


如果我有误解,请在评论中纠正我。

假设我理解正确,这是一个基本连接

SELECT id, fk_parent_cat_id, fk_parent_cat_name 
FROM table, parent_table 
WHERE table.id = parent_table.id;
由于没有正确的表名,请使用正确的表名进行修复,这还假定父表中的主键也被称为“id”


如果我有误解,请在评论中更正。

在查询中使用自连接

SELECT t.id, t.name, t.fk_parent_cat_id, p.name fk_parent_cat_name
FROM table t INNER JOIN
table p on t.fk_parent_cat_id = p.id

在查询中使用自联接

SELECT t.id, t.name, t.fk_parent_cat_id, p.name fk_parent_cat_name
FROM table t INNER JOIN
table p on t.fk_parent_cat_id = p.id

酷。这应该行得通。顺便说一句,这是一个单一类别的表。我想我需要对现有的所有类型的连接进行一些研究。我一直对它们有一些概念,现在我正在创建各种带有连接表之类的关系数据库,我只需要开始使用它们。这应该行得通。顺便说一句,这是一个单一类别的表。我想我需要对现有的所有类型的连接进行一些研究。我一直对它们有一些概念,现在我正在创建各种带有连接表之类的关系数据库,只需要开始使用它们。。