SQL Где, если еще - PullRequest
       1

SQL Где, если еще

0 голосов
/ 16 октября 2011

Как мне перевести этот код linq в sql?

if (storeId > 1)
            {
                query = from p in query
                        where (p.StoreId == storeId) 
                        select p;
            }

Если storeId> 1, я не хочу делать сравнение WHERE в SQL.

UPDATE Вот что я хотел бы сделать в SQL:

SELECT * FROM test 
WHERE (
  (test.city = @city)
  AND 
  (test.price = @price)
  AND
  (
  IF (@storeId > 1)
    test.storeId = @storeId
  ELSE
    do not do anything 
  )
)

Ответы [ 3 ]

3 голосов
/ 16 октября 2011
Select * from p where p.storeid = @storeid or @storeid > 1
1 голос
/ 16 октября 2011

Глядя на ваш код, выглядит, что вы ХОТИТЕ получить определенную запись storeId, если storeId> 1. Я также предполагаю, что вы имели в виду, что НЕ ХОТИТЕ предложение where, если storeId <= 1.Если мои предположения верны, то SQL, который вы запрашиваете, вероятно, выглядит следующим образом: </p>

Select * from p where (@storeId > 1 and p.storeId = @storeId) or @storeId <= 1

После просмотра вашего обновления вопроса этот SQL должен работать для вас:

 SELECT * FROM test WHERE  test.city = @city AND test.price = @price 
 AND ((@storeId > 1 AND test.storeId = @storeId) or @storeId <=1)

Обратите внимание, что если @storeId <= 1, он вернет все записи, которые соответствуют городу и цене.Если это не то, что вам нужно, и вы не хотите, чтобы какие-либо записи возвращались при @storeId <= 1, тогда вы можете удалить последнее условие ИЛИ, как показано ниже: </p>

 SELECT * FROM test WHERE  test.city = @city AND test.price = @price 
 AND (@storeId > 1 AND test.storeId = @storeId)
0 голосов
/ 16 октября 2011

1001 * попробовать *

var queryresult = from p in query
                  where ((p.StoreId == storeId) && (storeId > 1)) 
                        || (storeId <= 1)
                  select p;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...