我正在尝试编写一个新的应用程序,但我被卡住了。我想创建一个数据库,其中包含用于存储catogories的表和另一个用于存储子类的数据库。我有一些关于如何创建数据库/表的想法,但不知道如何一次选择属于该类别的类别和所有子类别。有人能帮助我吗?
情景:
ID为Users
的表格。
Categories
标识的ID
表格以及User.ID
的外键(一个类别只能属于一个用户)
SubCategories
的表格,其中包含其所属的Category
表的外键以及User.ID
所属的Category
。
如何选择并显示所有属于类别和子类别的用户名?
答案 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 = ?