帮助进行数据库查询

时间:2009-12-01 18:24:28

标签: 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
name: category 1
fk_parent_cat_id: 1
fk_parent_cat_name: top category

这个问题有意义吗?我认为有一种方法可以通过某种加入来实现这一点......

感谢任何inptut!

4 个答案:

答案 0 :(得分:3)

您可以使用INNER JOIN完成此操作。只需确保表和外键列的名称是它们实际存在于数据库中的名称(因为您没有提供有关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

答案 1 :(得分:1)

在查询中使用自联接。

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

答案 2 :(得分:1)

SELECT c.id, c.name, c.fk_parent_cat_id, p.name
FROM category c
left outer join category p on c.fk_parent_cat_id = p.id

答案 3 :(得分:0)

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

SELECT id, fk_parent_cat_id, fk_parent_cat_name 
FROM table, parent_table 
WHERE table.id = parent_table.id;

使用正确的表名修复表名,因为你没有它们,这也假设你父表中的主键也被称为'id'。

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