所以我设置了一个类别表。在此表中有一个名为“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!
答案 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'。
如果我误解了,请在评论中纠正我。