Мне нужно выбрать всю информацию из таблицы Grid, где она соответствует нескольким критериям, от объединения таблиц, т.е.SQL Выберите несколько условий И много раз
Select * from Grid
join table1...table2...table3....table4
where (table3.product = 'product1' AND table2.rate = 2)
AND (table3.product = 'product2' AND table2.rate = 3 AND table2.lage = 75)
AND (table3.product = 'product3' AND table2.rate = 0.25 AND table2.lage = 75 AND table2.uage=85)
Это мой фактический запрос на выборку:
Select * from Grid gr
join GridToPage g2p on gr.[GridID] = g2p.[GridID]
join Page p on p.[PageID] = g2p.[PageID]
join PageToProduct p2p on p2p.[PageID] = p.[PageID]
join Product pr on p2p.[ClumpCode] = pr.[ClumpCode]
join PageToProductToRate p2p2r on p2p2r.[PageToProductID] = p2p.[PageToProductID]
join ProductRates r on r.[ProductRatesID] = p2p2r.[ProductRatesID]
where
(pr.[ClumpCode] ='CUST5G' AND r.[Rate]=2 AND r.[LowerAge] = 0 AND r.[UpperAge] = 75)
AND (pr.[ClumpCode] = 'CUST7' AND r.[Rate] = 4)
AND (pr.[ClumpCode] = 'CUST5' AND r.[LowerAge] = 75 AND r.[UpperAge] = 85)
Там может быть несколько 'и' условия. Он будет возвращать все записи, которые удовлетворяют всем условиям. Этот запрос отлично работает только с одной строкой условий, но не более, чем с одним, он не возвращает результатов. pr. [ClumpCode] - обязательное условие, другие - нет, и для этого конкретного [ClumpCode] могут быть дополнительные 4 условия. Следующая строка условий применяется для другого [ClumpCode] и т. Д. Я также пытался использовать «HAVING» с суммой> 0 для каждой строки вместо «WHERE (...) AND», но это давало мне некоторые ошибки. Как это получить, когда у меня есть несколько условий «И»?
------------ EDIT ----------------------- Спасибо за комментарии, на самом деле условие на [ClumpCode] должен поступать из таблицы Product, а не ProductRate, как и у меня. Исправлено в запросах выше. Он должен быть «И» и удовлетворять всем условиям, чтобы вернуть true.
---------- EDIT2 ------------------ Изображение, иллюстрирующее, как поиск вернет результат для 'ML_GRID'
У вас возникла проблема с вашей логикой. Вы действительно имеете 'r. [ClumpCode] = 'CUST5G' AND r. [ClumpCode] = 'CUST7'', который никогда не будет правдой, и поэтому никакие строки не будут возвращены. Вы имели в виду «OR» линии вместе? – TobyLL
Вы можете использовать динамический SQL для создания запросов с несколькими условиями. – dyatchenko
@TobyLL Я сделал ошибку, которую исправил. Условие в [ClumpCode] должно состоять из другой таблицы. Таким образом, это будет pr. [ClumpCode] = 'CUST7' AND r. [Rate] = 0.25 – AidaM