繁体   English   中英

数据库查询帮助

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM