我有一个看起来像这样的表'model_values':
+----+------------+-------------+----------------+------------+
| id | value_post | value_model | value_property | value_data |
+----+------------+-------------+----------------+------------+
| 1 | 1 | 39 | 1 | ValueA |
| 2 | 1 | 39 | 2 | Value1 |
| 3 | 1 | 39 | 3 | 2013 |
| 4 | 2 | 39 | 1 | ValueA |
| 5 | 2 | 39 | 2 | Value2 |
| 6 | 2 | 39 | 3 | 2012 |
| 7 | 3 | 39 | 1 | ValueB |
| 8 | 3 | 39 | 2 | Value1 |
| 9 | 3 | 39 | 3 | 2013 |
| 10 | 4 | 30 | 1 | ValueA |
| 11 | 4 | 30 | 2 | Value2 |
| 12 | 4 | 30 | 3 | 2013 |
+----+------------+-------------+----------------+------------+
我正在尝试根据以下查询创建一组下拉列表,显示 value_property 的 1 和 2 的 value_data:
SELECT *
FROM model_values
INNER JOIN models
ON model_values.value_model = models.id
INNER JOIN properties
ON model_values.value_property = properties.id
WHERE model_values.value_property = {$safe_property} && models.id = {$safe_model_id}
GROUP BY model_values.value_data
但我希望下拉菜单也受到 value_property 3 (即年份)的限制。因此,用户将首先选择 2013 年,然后通过以下选项获得两个下拉菜单可供选择:
Select 1: ValueA/ValueB
Select 2: Value1
或者,如果他们首先选择 2012 年,他们会看到:
Select 1: ValueA
Select 2: Value2
我试图提出如下查询:
WHERE model_values.value_property = 1 && models.id = 39 && model_values.value_data = 2013
但显然这不起作用,因为 value_property 1 永远不会有 2013 年的 value_data。
或子查询,如:
WHERE model_values.value_property = 1 && models.id = 39 && model_values.value_data = (
SELECT model_values.value_data
FROM model_values
WHERE model_values.value_data = 2013
)
但这会返回超过 1 行。
这样的查询可能吗?