Sql 通过关联表查询产品、类别
我有两个常用的表,产品和类别,由于多对多的关系,我创建了一个键映射表,它将两者联系起来。例如,此关联表如下所示:Sql 通过关联表查询产品、类别,sql,database,Sql,Database,我有两个常用的表,产品和类别,由于多对多的关系,我创建了一个键映射表,它将两者联系起来。例如,此关联表如下所示: id product_id category_id 1 2 4 2 2 6 3 3 4 etc 其中它们是相应的产品标识和类别标识主键的外键 所以现在我尝试编写一个查询来测试结果。通常,我想让它向我展示一些属于特定类别的产品。但我尝试了几个查询,但它告诉我mysql语法有一个错误 select pro
id product_id category_id
1 2 4
2 2 6
3 3 4
etc
其中它们是相应的产品标识
和类别标识
主键的外键
所以现在我尝试编写一个查询来测试结果。通常,我想让它向我展示一些属于特定类别的产品。但我尝试了几个查询,但它告诉我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作为引擎。将
producto categoria
重命名为productocategoria
。连字符导致语法错误,因为它被解释为减号。您也可以转义名称,但最好使用“简单”名称,而不是包含非标准字符的名称
还有两件事:
- 使用表别名
- 由于未使用该表,请删除到
分类的联接
重命名您的表,使其不包含连字符。谢谢!我得等10分钟才能批准。你的观点完全正确。连字符使我怀疑,但它并没有完全唤醒我的意识。关于化名,我也要买你的书。这个标题非常有趣,我实际上尽了最大努力使用sql创建销售报告。绝对是我的必读书目。
select p.name
from products p join
productocategoria pc
on pc.product_id = p.id
where pc.category_id = 3
limit 100