SQL существует не работает - PullRequest
       1

SQL существует не работает

0 голосов
/ 09 сентября 2011

У меня есть запрос SQl, ниже которого перечислены магазины

Всякий раз, когда я получаю «Все типы городов» в полях citytypename, мне НЕ нужно перечислять другие строки для конкретный storelocationid

Результат

71    8    0    All City Types    West    Dhanalakshmi store     All Cities    All States
71    8    1    Tier 2            West    Dhanalakshmi store     Bangalore     Karnataka
71    8    2    Tier 2            West    Dhanalakshmi store     Ahmedabad     Gujarat      

как я перепишу свой запрос для этого?

SELECT  LL.StoreLocationID
       ,LC.[StoreID]
       ,ISNULL(LC.CityID,0) CityID
       ,ISNULL(C.CityTypeName,'All City Types') CityTypeName
       ,ISNULL(LL.RegionName,'All Regions') RegionName
       ,L.[Name] StoreName
       ,ISNULL(C.Name,'All Cities') AS CityName
       ,ISNULL(S.Name, 'All States') AS StateName
FROM [StoreCity] LC
    INNER JOIN [Store] L ON L.[StoreID] = LC.[StoreID] 
    INNER JOIN [StoreLocation] LL ON LL.StoreID=LC.StoreID
    LEFT OUTER JOIN [City] C ON LC.CityID = C.CityID
    LEFT OUTER JOIN [State] S ON C.StateID = S.StateID
WHERE StoreLocationID =  71
AND (
   /* current row is 'All City Types' */
   C.CityTypeName IS NULL
   OR 
   /* current row is not 'All City Types', 
      but there does not exist another row that is. */
   NOT EXISTS (
      SELECT 1
      FROM [StoreLocation] LL2 ON LL2
      INNER JOIN [StoreCity] LC2 ON LC2.[StoreID] = LL2.[StoreID]
      INNER JOIN [City] C2 ON C2.[CityID] = LC2.[CityID]
      WHERE LL2.StoreLocationID = LL.StoreLocationID
      AND C2.CityTypeName IS NULL
   )
)

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011
SELECT  final .StoreLocationID
       ,final .[StoreID]
       ,final .CityID
       ,final .CityTypeName
       ,final .RegionName
       ,final .StoreName
       ,final .CityName
       ,final .StateName from ( SELECT  LL.StoreLocationID
       ,LC.[StoreID]
       ,ISNULL(LC.CityID,0) CityID
       ,ISNULL(C.CityTypeName,'All City Types') CityTypeName
       ,ISNULL(LL.RegionName,'All Regions') RegionName
       ,L.[Name] StoreName
       ,ISNULL(C.Name,'All Cities') AS CityName
       ,ISNULL(S.Name, 'All States') AS StateName FROM [StoreCity] LC
    INNER JOIN [Store] L ON L.[StoreID] = LC.[StoreID] 
    INNER JOIN [StoreLocation] LL ON LL.StoreID=LC.StoreID
    LEFT OUTER JOIN [City] C ON LC.CityID = C.CityID
    LEFT OUTER JOIN [State] S ON C.StateID = S.StateID WHERE StoreLocationID =  71 AND (    /* current row is 'All City Types' */   C.CityTypeName IS NULL    OR     /* current row is not 'All City Types', 
      but there does not exist another row that is. */    NOT EXISTS (
      SELECT 1
      FROM [StoreLocation] LL2 ON LL2
      INNER JOIN [StoreCity] LC2 ON LC2.[StoreID] = LL2.[StoreID]
      INNER JOIN [City] C2 ON C2.[CityID] = LC2.[CityID]
      WHERE LL2.StoreLocationID = LL.StoreLocationID
      AND C2.CityTypeName IS NULL    ) ) ORDER BY FIELD("All City Types", CityTypeName) DESC ) as final group by final.StoreLocationID

Попробуйте это, не проверено ...

0 голосов
/ 09 сентября 2011

Я думаю, вы пытаетесь найти DISTINCT и, возможно, соответствующий GROUP BY.

Примерно так:

SELECT DISTINCT ISNULL(C.CityTypeName,'All City Types') CityTypeName FROM ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...