我有一個SQL查詢,像這樣:如何過濾來自複雜SQL查詢的結果?
SELECT `categories`.`partnumbersafe`, `filters`.`filtername`, `filters`.`filtervalue`
FROM `products_categories` AS `categories`
LEFT OUTER JOIN `products` AS `product` ON `categories`.`partnumbersafe` = `product`.`partnumbersafe`
LEFT OUTER JOIN `products_filters` AS `filters` ON `categories`.`partnumbersafe` = `filters`.`partnumbersafe`
WHERE `categories`.`categoryid` =4
AND (`product`.`visibility` =1 OR `product`.`visibility` =2)
AND `product`.`status` =1
這給了我那裏有不同的過濾器的名字和filtervalues多個partnumbersafe條目(值相同)的結果。例如:
partnumbersafe filtername filtervalue
123 brand toyota
123 model F5
123 type business
678 brand toyota
678 model F6
該查詢由PHP生成。我的PHP腳本中也有POST值,它們包含filterdata(品牌是toyota,型號是F6)。
如何過濾filtername/value對的這些結果?我寧願一個SQL查詢解決方案,而不是一個PHP解決方案,在那裏我可以查詢partnumbersafe品牌是豐田和模型是F6。所以它只會檢索上表中的partnumbersafe 123。
表products_filters保存上表所示的所有數據。
此外,由於這些過濾器,你不需要'LEFT JOIN',你可以使用'INNER JOIN' - 任何沒有過濾器記錄的東西都將被'WHERE'子句排除...... – MatBailie
Dems,如果我還需要每個查詢的filtername品牌價值,這是可能的嗎? –
你能否在你的問題中舉一個例子? – MatBailie