我有如下表模式和值:MySQL的退貨單
我想要實現的是讓提供商IDS(id_provider)匹配多個,其中列表指標分析,例如:
- 我想通過id_attribute = 71和值3400來搜索,並且還希望過濾通過id_attribute該表= 70哪個值4300返回提供商列表應該是:(2)
- 下一個搜索 - id_attribute = 72,並且過濾的值在200到700之間,所以它應該返回提供者列表等於(2,3)。
這種結構可能嗎?
我有如下表模式和值:MySQL的退貨單
我想要實現的是讓提供商IDS(id_provider)匹配多個,其中列表指標分析,例如:
這種結構可能嗎?
您正在合併來自不同行的值,因此請考慮group by
和having
。你的第一個查詢是:
select id_provider
from
group by id_provider
having max(id_attribute = 71 and value = '3400') > 0 and
max(id_attribute = 70 and value = '4300') > 0;
而第二個:
select id_provider
from
group by id_provider
having max(id_attribute = 72 and value between '200' and '700') > 0;
注意引號是因爲該值列確實是一個字符串。如果您需要數字比較,則可能需要轉換爲數字。
完美,這是我想要的方式。非常感謝你的回答。 – Kamil
在你的第一個問題時,你的where子句會像... WHERE (id_attribute = 71 AND value = "3400") AND (id_attribute = 70 AND value = "4300");
在你的第二個,你將不得不使用BETWEEN ... WHERE id_attribute = 72 AND value BETWEEN(200,700);
你也可能需要使用SELECT DISTINCT id_provider
這樣你就不會結束與多個相同的ID。
第一個搜索:
SELECT your_fields
FROM your_table
WHERE ((id_attribute = 71 AND value = 3400) AND (id_attribute = 70 AND value=4300))
第二個搜索:
SELECT your_fields
FROM your_table
WHERE (id_attribute = 72 AND (value BETWEEN 200 AND 700))
我已經使用了許多支架,讓你看到的 「邏輯」 分區。
第一次搜索不起作用,已經嘗試過,但我認爲它不是那麼簡單。我不能在單個WHERE子句中使用兩個id_attributes。 – Kamil
其他答案是正確的bt kamil你的值字段看起來像varchar ....你不能在varchar之間使用「between」。
你可以使用它只能用於範圍......也就是說,在某個日期之間或數字之間。
是的,這是可能的。你到目前爲止寫了什麼查詢? – codingbiz
我嘗試使用GROUP BY id_provider和HAVING子句,但沒有得到我所期望的。 – Kamil
根據下面的問題和意見,您期望的結果很難理解。我建議你找到一種重新措詞的方法,可以讓你更清楚你想要做什麼。 – DevlshOne