Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 通过关联表查询产品、类别_Sql_Database - Fatal编程技术网

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