包含每个类别的类别和多个子类别的表

时间:2014-08-05 11:17:01

标签: sql database

我正在尝试编写一个新的应用程序,但我被卡住了。我想创建一个数据库,其中包含用于存储catogories的表和另一个用于存储子类的数据库。我有一些关于如何创建数据库/表的想法,但不知道如何一次选择属于该类别的类别和所有子类别。有人能帮助我吗?

情景:

  • ID为Users的表格。

  • Categories标识的ID表格以及User.ID的外键(一个类别只能属于一个用户)

  • SubCategories的表格,其中包含其所属的Category表的外键以及User.ID所属的Category

如何选择并显示所有属于类别和子类别的用户名?

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您需要一个能够获得如下结果的查询:

  

用户类别子类别
      鲍勃|生成器| BuilderSub1
      鲍勃|生成器| BuilderSub2
      杰瑞|主管| SupervisorSub1
      蒂姆|生成器| BuilderSub3

SELECT u.UserName as 'User', c.CategoryName as 'Category', sc.SubcategoryName as 'SubCategories'     
FROM Users u 
INNER JOIN Category c ON c.UserId = u.Id 
INNER JOIN Subcategory sc ON
sc.CategoryId = c.Id  
GROUP BY sc.SubcategoryName, c.CategoryName, u.UserName

GROUP BY就是您所需要的。

答案 1 :(得分:0)

您需要一个外键关系和一个JOIN:

create table category (
    id int not null auto_increment,
    primary key(id)
);

create table subcategory (
    id int not null auto_increment,
    category_id int,
    primary key(id),
    foreign key(category_id) references category(id)
);

这是一个示例JOIN:

select *
from user
join category
on user.category_id = category.id
join subcategory
on category.id = subcategory.category_id
where user.id = ?