我有像这样的桌子
products product_attributes
================== ========================================
| id | name | | id | product_id | attribute | value |
================== ========================================
| 1 | product 1 | | 1 | 1 | min | 2 |
| 2 | product 2 | | 2 | 1 | max | 5 |
| 3 | product 3 | | 3 | 2 | min | 10 |
| 3 | product 3 | | 4 | 2 | max | 15 |
| .. | ... | | 5 | 3 | min | 1 |
================== | 6 | 3 | max | 100 |
| .. | ... | ... | ... |
========================================
我想获得一个范围内的所有产品我可以成功地获得一个范围内的ID列表
SELECT p.id
FROM `products` p INNER JOIN `product_attributes` AS pa ON p.id = pa.product_id
WHERE pa.`min` <= 5 AND pa.`max` >= 5 GROUP BY p.id
这给了我需要的 id 列表。我无法开始工作的是获取 id 的总数而不是列表,所以我不能使用 group by 然后当我这样做时它会弄乱计数。
做到这一点的唯一方法是在子选择中使用上面的选择并计算结果吗?
谢谢