简体   繁体   中英

Help with a DB query

So I have a category table set up. Within this table there is a field called "id", "name","fk_parent_cat_id" (and more). The "fk_parent_cat_id" basically just ties one particular category to a parent category.

Ok. That being said, how would I make a query that grabs the information on the category, but ALSO grabs the information on the parent category. My main concern is that right now I am only grabbing the parent id, which is nice, but I dont want to have to run another query to identify the name of the parent category.

A normal query result would be something like:

id: 2
name: category 1
fk_parent_cat_id: 1

And, I want the result to be

id: 2
name: category 1
fk_parent_cat_id: 1
fk_parent_cat_name: top category

Does this question make sense? I figure there is a way to do this with some sort of join...

Thanks for any inptut!

You can accomplish this with an INNER JOIN. Just ensure the name of your tables and foreign key columns are what they actually are in your database (since you gave no information regarding the column names in the ParentCategory table). Keep in mind that if you have a single category table (ie all of your categories are stored in a single table) that there is nothing wrong with self-joining against the same table - you just need to alias the tables names in your query to ensure they aren't ambiguous.

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

Use a self join in the query.

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

Assuming I understand correctly, this is a basic join

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

Fix the table names with the correct ones since you didn't have them, and this also assumes your primary key in the parent table is just called 'id' as well.

If I'm misunderstanding, correct me in a comment.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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