[英]Help with a DB query
所以我建立了一个类别表。 在此表中,有一个名为“ id”,“ name”,“ fk_parent_cat_id”(以及更多)的字段。 “ fk_parent_cat_id”基本上只是将一个特定类别与父类别相关联。
好。 话虽如此,我将如何进行查询以获取有关类别的信息,而ALSO却获取有关父类别的信息。 我主要关心的是,现在我只获取父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
这个问题有意义吗? 我认为有一种方法可以通过某种联接来做到这一点...
感谢您的投入!
您可以使用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
在查询中使用自联接。
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 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
假设我理解正确,这是一个基本的联接
SELECT id, fk_parent_cat_id, fk_parent_cat_name
FROM table, parent_table
WHERE table.id = parent_table.id;
由于您没有正确的表名,因此请使用正确的表名进行修复,并且这还假定父表中的主键也被称为“ id”。
如果我误会了,请在评论中纠正我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.