我在 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/