我有一個表「model_values」,看起來像這樣:如何執行受相同表中值限制的mysql查詢?
+----+------------+-------------+----------------+------------+
| 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行。
是否有這樣的查詢可能?
期望的結果是什麼樣的? - 併爲上述提供一個sqlfiddle – Strawberry
下面是鏈接到一個sqlfiddle:http://sqlfiddle.com/#!2/d3f3b6/2 結果將看起來像鏈接中的一個,但查詢將涉及限制它到2012年,所以「價值1」不應該出現。 我只知道關於mysql在這一點上遇到麻煩。我假設,如果我不能讓這個查詢工作,我將不得不回去看看我如何通過結果在我的PHP循環。 – ryansommers
我收集的是隻有mysql才能實現的功能。我已經調整了我的PHP循環,以獲得我期待的結果。不知道現在是否關閉或刪除此問題? – ryansommers