用SQL连接两个表

用SQL连接两个表,sql,Sql,我是SQL的新手 我有两张桌子: “类别”(两列“id”和“类别名称”) “品牌”(两列“id”和“品牌名称”) 我想显示一个表格,根据类别显示品牌,例如: ID__________Category ______________Brand 1___________category-a _____________brand-x 2___________category-b _____________brand-y 3___________category-c________

我是SQL的新手

我有两张桌子:

  • “类别”(两列“id”和“类别名称”)
  • “品牌”(两列“id”和“品牌名称”)
  • 我想显示一个表格,根据类别显示品牌,例如:

    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