sql - 多对多的复杂 SQL 查询

标签 sql postgresql many-to-many

我在 PostgreSQL 中有三个表:

1. product: id, name
2. param: id, name
3. param_product: id, product_id, param_id, value - (!) it's Many to Many

这是选择产品的问题,例如,“(param_id=1 and value=2000) and (param_id=2 and value=1000)”

有什么办法解决这个问题?

谢谢。

最佳答案

解决此问题的方法还取决于您希望在选择中返回哪些列。如果您想要的只是来自产品的列,那么它很简单。

SELECT *
FROM product
WHERE     EXISTS (SELECT 1 FROM product_id = product.id AND param_id=1 and value=2000)
      AND EXISTS (SELECT 1 FROM product_id = product.id AND param_id=2 and value=1000)

此外,就 SQL 而言,这仍然是一对多关系。

关于sql - 多对多的复杂 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203645/

相关文章:

java - 在单个存储过程中创建两个或多个表

java - 在 Spring 中保存两个模型之间的多对多关系

asp.net-mvc - MVC + EF Code First 多对多关系 : Create view with checkbox

sql - SQL 注入(inject)漏洞中的奇怪格式?

python - 如何使用 SQLAlchemy 使用 SELECT COUNT(*) 计算行数?

php - 根据MySQL表数据减少变量的方法是什么?

php - sql中的组计数产品ID

mysql - 如果第一个parent_id级别> 1而不是id级别,则生成值为1的列

macos - PostgreSQL Mountain Lion 套接字问题

many-to-many - DDD : nested aggregates and many to many relationships