SQL LEFT OUTER JOIN Проблема с предложением Where - PullRequest
0 голосов
/ 27 мая 2019

У меня есть две таблицы в базе данных. Таблица продукта, которая содержит информацию о продукте, и другая таблица SiteProduct, которая содержит идентификатор первой таблицы с именем ProductID и дополнительный SiteID, в котором хранится информация о том, какой сайт имеет какие продукты в своем каталоге. Мне нужно создать сетку на веб-сайте, которая будет отображать все продукты, а затем проверять или снимать флажок, если на сайте есть продукт в их каталоге. Мне нужно сделать это в одном запросе. Пожалуйста, смотрите мой запрос ниже, я пытаюсь использовать левое внешнее соединение для соединения таблицы Product и таблицы SiteProduct. Однако, используя этот запрос, возвращаются только те продукты, которые имеют запись в таблице SiteProduct с SiteID 100. Допустим, есть 100 продуктов, а в таблице SiteProduct 50 продуктов для SiteID 100, я получаю только 50 результатов, когда я Мне нужно просмотреть все 100. Мне нужен запрос, чтобы показать все продукты, а затем нулевое значение или что-то, если у SiteID100 нет этой записи в таблице SiteProduct. Опять же, это должно быть сделано в одном запросе, я не хочу делать последующие вызовы SELECT для таблицы SiteProduct для каждого отдельного продукта. В идеале я хотел бы, чтобы это работало как ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ, но я открыт для других возможностей.

Пожалуйста, смотрите мой запрос ниже, спасибо.

SELECT this_.ID                  as ID110_3_,
       this_.Name                as Name110_3_,
       this_.Description         as Descript3_110_3_,
       this_.RxStatement         as RxStatem4_110_3_,
       this_.CreatedDate         as CreatedD5_110_3_,
       this_.Weight              as Weight110_3_,
       this_.UPC                 as UPC110_3_,
       this_.UOM                 as UOM110_3_,
       this_.LastModified        as LastModi9_110_3_,
       this_.IsDeleted           as IsDeleted110_3_,
       this_.DeletedDate         as Deleted11_110_3_,
       this_.Url                 as Url110_3_,
       this_.CreatedByUserId     as Created13_110_3_,
       this_.Status              as Status110_3_,
       this_.CategoryID          as CategoryID110_3_,
       this_.ManufacturerID      as Manufac16_110_3_,
       this_.CreatedBySiteID     as Created17_110_3_,
       this_.DistributorFeedGuid as Distrib18_110_3_,
       sp3_.ProductID            as ProductID5_,
       sp3_.ID                   as ID5_,
       sp3_.ID                   as ID143_0_,
       sp3_.Name                 as Name143_0_,
       sp3_.Description          as Descript3_143_0_,
       sp3_.HasSpecial           as HasSpecial143_0_,
       sp3_.IsAdvanced           as IsAdvanced143_0_,
       sp3_.SpecialDescription   as SpecialD6_143_0_,
       sp3_.SpecialTitle         as SpecialT7_143_0_,
       sp3_.ProductNumber        as ProductN8_143_0_,
       sp3_.Price                as Price143_0_,
       sp3_.SalePrice            as SalePrice143_0_,
       sp3_.StoreDescription     as StoreDe11_143_0_,
       sp3_.Tagline              as Tagline143_0_,
       sp3_.LastModified         as LastMod13_143_0_,
       sp3_.CreatedDate          as Created14_143_0_,
       sp3_.RentalPrice          as RentalP15_143_0_,
       sp3_.IsRental             as IsRental143_0_,
       sp3_.IsFeaturedProduct    as IsFeatu17_143_0_,
       sp3_.ShowPrice            as ShowPrice143_0_,
       sp3_.RequestType          as Request19_143_0_,
       sp3_.MetaTitle            as MetaTitle143_0_,
       sp3_.MetaDesc             as MetaDesc143_0_,
       sp3_.MetaKeywords         as MetaKey22_143_0_,
       sp3_.RequireRX            as RequireRX143_0_,
       sp3_.[Order]              as Order24_143_0_,
       sp3_.BrightreeItemID      as Brightr25_143_0_,
       sp3_.LowQuantityThreshold as LowQuan26_143_0_,
       sp3_.UOM                  as UOM143_0_,
       sp3_.BTIsRental           as BTIsRental143_0_,
       sp3_.WeeklyRentalRate     as WeeklyR29_143_0_,
       sp3_.MonthlyRentalRate    as Monthly30_143_0_,
       sp3_.SiteID               as SiteID143_0_,
       sp3_.ProductID            as ProductID143_0_,
       cat2_.ID                  as ID25_1_,
       cat2_.Name                as Name25_1_,
       cat2_.ImageID             as ImageID25_1_,
       manu1_.ID                 as ID85_2_,
       manu1_.Name               as Name85_2_
FROM   Catalog.[Product] this_
       left outer join Catalog.[SiteProduct] sp3_
         on this_.ID = sp3_.ProductID
       inner join Catalog.Category cat2_
         on this_.CategoryID = cat2_.ID
       inner join [Manufacturer] manu1_
         on this_.ManufacturerID = manu1_.ID
WHERE  sp3_.SiteID = 100
ORDER  BY this_.Name asc

1 Ответ

0 голосов
/ 04 июня 2019

В итоге я решил эту проблему, используя несколько операторов in в предложении where.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...