【发布时间】:2018-05-11 21:11:50
【问题描述】:
我有以下 SQL 架构:
+----------+
| products |
+----------+
| id |
| name |
+----------+
^ 8
|
v 1
+-------------+
| values |
+-------------+
| value |
| product_id |
| property_id |
+-------------+
^ 8
|
v 1
+------------+
| properties |
+------------+
| id |
| name |
+------------+
一个产品有很多属性,一个属性属于很多产品。 values 表是products 和properties 之间的many_to_many 关联的连接表。并且在此表中保存了产品的属性值。
现在我正在寻找一个查询来选择属性为x 的所有产品,其值为a,属性y 的值为b ecc。我的尝试是这个查询,但不返回任何记录:
SELECT DISTINCT
products.*
FROM
products
INNER JOIN
product_values
ON product_values.product_id = products.id
INNER JOIN
properties
ON properties.id = product_values.property_id
WHERE
(properties.name = 'size' AND product_values.value = 'big')
AND (properties.name = 'color' AND product_values.value = 'red')
如果可能,我需要一个没有嵌套选择的查询。
【问题讨论】:
标签: mysql sql select inner-join