通过关联表查询产品,类别

时间:2017-05-30 15:41:45

标签: sql database

我有两个常用的表,产品和类别,并且由于多对多关系,我创建了一个与两者相关的键映射表。这种关联表就像这样:

id  product_id  category_id
1      2         4
2      2         6
3      3         4
etc

它们是相应product_idcategory_id主键的外键。

所以现在我正在尝试编写一个查询来测试结果。通常我希望它向我展示一些属于特定类别的产品。但我已经尝试了几个查询,但它告诉我我的mysql语法有错误。

select products.name
from products
join producto-categoria
on producto-categoria.product_id = products.id
join categorias
on producto-categoria.category_id = categorias.id
where categorias.id = 3
limit 100

我实际上首先在phpmyadmin中创建了结构,然后上传了相应的csv文件,最后通过他们在关联表中创建了索引的FK(也称为键映射表)链接了它们,我没有任何错误而它创建了FK链接。 InnoDB作为引擎。

1 个答案:

答案 0 :(得分:0)

producto-categoria重命名为productocategoria。连字符导致语法错误,因为它被解释为减号。您也可以转义名称,但最好使用“简单”名称而不是包含非标准字符的名称。

然后还有两件事:

  • 使用表格别名。
  • 删除与categorias的联接,因为未使用该表。

所以:

select p.name
from products p join
     productocategoria pc
    on pc.product_id = p.id
where pc.category_id = 3
limit 100