用SQL连接两个表
我是SQL的新手 我有两张桌子:用SQL连接两个表,sql,Sql,我是SQL的新手 我有两张桌子: “类别”(两列“id”和“类别名称”) “品牌”(两列“id”和“品牌名称”) 我想显示一个表格,根据类别显示品牌,例如: ID__________Category ______________Brand 1___________category-a _____________brand-x 2___________category-b _____________brand-y 3___________category-c________
ID__________Category ______________Brand
1___________category-a _____________brand-x
2___________category-b _____________brand-y
3___________category-c______________brand-z
4___________category-d______________brand-x
5___________category-e______________brand-x
6___________category-e______________brand-y
每个品牌可分为1个或n个类别,每个类别可分为1个或n个品牌
我是否必须创建另一个表来合并这两个表?我有点困惑,因为我读了一些sql教程,但给出的示例不是针对2个关联表的。
谢谢:)品牌和类别之间的联系是多对多的。这意味着,它必须是另一个BrandCategory表,包含来自品牌和类别的主键。您通常会创建一个映射关系的中间表(在本例中为多对多) 然后,您可以执行以下操作:
-- Get all brands for a category
SELECT * FROM brand
INNER JOIN brand_category ON (brand.id = brand_category.brand_id AND brand_category.category_id = 12)
-- List all brands along with categories
SELECT brand.name,category.name FROM brand
LEFT JOIN brand_category ON (brand.id = brand_category.brand_id)
LEFT JOIN category ON (brand_category.category_id = category.id)
您需要一个连接表,例如:
CREATE TABLE category_brand (
category_id NUMERIC,
brand_id NUMERIC,
);
ALTER TABLE category_brand
ADD CONSTRAINT category_brand_pk PRIMARY KEY (category_id, brand_id);
现在,您可以使用联接进行查询:
SELECT category, brand
FROM category c
JOIN category_brand cb ON c.category_id = cb.category_id
JOIN brand b ON cb.brand_id = b.brand_id
听起来类别和品牌之间的关系是多对多的。您可以在数据库中使用一个.just remove“,”来对其进行建模:brand_id numericshanks,答案:)但如何从表类别中选择列brand?在本栏中,我只有“类别”栏
SELECT category, brand
FROM category c
JOIN category_brand cb ON c.category_id = cb.category_id
JOIN brand b ON cb.brand_id = b.brand_id