我有一个2类系统,基本上我想做的是我有2个表,top_category和bottom_category,我创建了侧边栏,它将使用sql查询列出所有产品。有没有一种方法可以在一个sql查询中提取top_category和bottom_category数据,并按top_category的外键ID对bottom_category进行排序,因此当我在列表中循环它们时,它们最终会出现在正确的嵌套中?
这是我的桌子
CREATE TABLE top_category (
id INT PRIMARY KEY,
NAME VARCHAR(100)
);
CREATE TABLE bottom_category (
id INT PRIMARY KEY,
NAME VARCHAR(100) ,
top_category_id INT REFERENCES top_category
);
这是我的产品表,因此当我单击bottom_category链接时,我希望它列出链接到bottom_category_id的产品:
create table product (
id int primary key,
name varchar(100) ,
bottom_category_id int references bottom_category
);
最佳答案
你可以写类似
SELECT product.*, bottom_category.name, top_category.name
FROM product
LEFT JOIN bottom_category ON bottom_category.id = product.bottom_category_id
LEFT JOIN top_category ON top_category.id = bottom_category.top_category_id
ORDER BY top_category.id,bottom_category.id
但是,如果您有非常大的表,则只需忽略第三个范式,然后将类别名称添加到产品表即可。但前提是您的分类表很大。
UPD
添加
ORDER BY
关于php - 连接具有外键ID的2个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18150831/