我有一個基本的許多一對多表是:查詢上的許多與多種或多個表/ AND
tbFilter
filterId | filterName
tbProduct
productId | productName
tbProductFilter
filterId | productId
所以,我有很多產品與許多過濾器(顏色,大小等) 。現在,我需要創建一個程序來查找具有一些過濾器組合的產品,例如: 所有產品是(藍色或綠色)和(大型OR大型)和(forMen)
我發現創建此查詢包含同一個表的多個連接,每個連接用於「組」篩選器或多個子查詢,每個用於一個組。最大的問題是多對多的表有更多的10萬條記錄,所以這種方法表現不佳。
如何做這個查詢的最佳方法?我使用的是SQL 2012
感謝
這是我得到現在的工作:
select [produtos].* FROM [dbo].[tbProdutos] AS [produtos] JOIN [dbo].tbJuncaoProdutoCategoria] AS [juncaoProdutoCategoria] ON [produtos].[produtoId] = juncaoProdutoCategoria].[produtoId] JOIN [dbo].[tbJuncaoProdutoCategoria] AS juncaoProdutoCategoria2] ON [produtos].[produtoId] = [juncaoProdutoCategoria2].[produtoId] JOIN [dbo].[tbProdutoCategoria] AS [produtoCategoria] ON [produtoCategoria].[categoriaId] = [juncaoProdutoCategoria].[categoriaId] where [juncaoProdutoCategoria].categoriaId = 1 AND ([juncaoProdutoCategoria2].categoriaId = 300 OR [juncaoProdutoCategoria2].categoriaId = 301)
你對這些表是什麼指標?此外,你可以顯示你正在嘗試這個例子的查詢嗎? – PinnyM
我剛剛發送了我現在使用的查詢。我正在尋找的是一種更好的方法,我不需要在每個過濾器「組」中加入聯繫 – user1592608