2015-05-03 38 views
0

我有一個查詢,如:Mysql的查詢多個選項

SELECT bp.*, b.company 
FROM `DBPREFIXwindows_brands_products` bp 
LEFT JOIN `DBPREFIXwindows_brands` b ON bp.brand_id = b.id 
JOIN Windows_last_submissions ls 
WHERE bp.width = ROUND(ls.width) 
AND bp.height = ROUND(ls.height) 
AND bp.material = ls.chosenmaterial 
AND bp.type = ls.type 
AND IF 
(ls.minimumbid != 'NULL',bp.cost BETWEEN (ls.minimumbid AND ls.maximumbid),bp.cost <= ls.maximumbid) 

領域「chosenmaterial」來自一個選擇框,可容納多個選項。我的問題是,在這個查詢中 - 我如何使WHERE子句工作,以便如果一個人選擇多於1個選項(顯然用逗號分隔成行),我如何查詢包含任何和所有這些選項的任何內容? ?

+0

在具有單選項時也是因爲該選項出現麻煩addition..I'm「選項」,並在最後是否逗號有一個選項或多個選項。很明顯,這會干擾查詢。如果有任何「這些選項在'bp.material'行中」,請查詢以上所有內容? –

+0

選擇多個選項,(顯然分開成逗號排) - 顯而易見?不是我。請解釋 – Strawberry

+0

對不起。材料行從具有不同值的選擇框中填充(總共5個)。現在的數據類型是「Char」(我之前使用「varchar」的結果相同)。如果用戶選擇一個選項 - 它會在數據庫中顯示爲「乙烯基」,後面跟着逗號......以及他們選擇的相同,比如說「乙烯樹脂,木頭」。當我輸入這個時,我想知道它是否來自我使用的窗體...或者可能我可以刪除查詢中的「,」字符? –

回答

0

您可以使用該字段的IN運算符。如果你能建立匹配的模式一樣選擇的材料的清單:

(material1, material2, material3) 

你可以讓你的where子句是這樣的:

WHERE bp.material IN (material1, material2, material3) 

這將拉動有這三個之一的任何行材料。在某種程度上,它是具有多OR語句只是一個簡化版本:

WHERE material = material1 OR material = material2 OR material = material3 
+0

非常感謝McAdam,這正是我需要的! –

+0

@CaseyStack很高興我能幫上忙!如果這是您使用的解決方案,隨時通過點擊答案旁邊的複選標記來接受它,以便將來的讀者將知道什麼解決了您的問題。 – AdamMc331