Нужен запрос для возврата результатов, даже если они дублируются

Мне нужно, чтобы этот запрос возвращал результаты даже для повторяющихся значений.

Пример запроса:

SELECT p.SKU
    , p.UPC
    , sw.ProductName    
  FROM [TGB_Production]..[view_TGB_FutureProducts] p
  INNER JOIN [TGB_Production]..[TGB_Products_SupWoW] sw ON p.SKU = sw.SKU
  INNER JOIN [TGB_Production]..[view_TGB_FutureProducts_SupWoW] fsw ON p.SKU = fsw.SKU
      and p.SKU in ('1839006B', '1839006B', '1839006C')
  ORDER BY p.SKU DESC

Текущий результат:

SKU         UPC ProductName
1839006C    xxx     xxx
1839006B    xxx     xxx

Желаемый результат:

SKU         UPC ProductName
1839006C    xxx     xxx
1839006B    xxx     xxx
1839006B    xxx     xxx

Я нашел аналогичный вопрос/ответ здесь, но у меня возникли проблемы с включением решения.

Результаты запроса SQL должны возвращать все записи в предложении WHERE, даже дубликаты

view_TGB_FutureProducts_SupWoW:

SKU         SalePrice   CanadianSalePrice   Minimum UnitIncrements
1839006B    40.00       0.00                2       2

TGB_Products_SupWoW:

SKU         ProductName             SkuGroup
1839006B    Boucle Sweater Duster   GRP_1839006

view_TGB_FutureProducts:

SKU         ProductName             UPC
1839006B    Boucle Sweater Duster   45765751839006

Предоставьте образец входных данных для трех таблиц.

Amir Molaei 10.04.2019 21:35
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте join вместо in:

SELECT p.SKU, p.UPC, sw.ProductName    
FROM [TGB_Production]..[view_TGB_FutureProducts] p JOIN
     [TGB_Production]..[TGB_Products_SupWoW] sw
     ON p.SKU = sw.SKU JOIN
     [TGB_Production]..[view_TGB_FutureProducts_SupWoW] fsw
     ON p.SKU = fsw.SKU JOIN
     (VALUES ('1839006B'), ('1839006B'), ('1839006C')
     ) v(SKU)
     ON v.SKU = p.SKU
ORDER BY p.SKU DESC;

Если вы также хотите включить значения, которые есть в списке IN, но не в исходных данных, вам нужно внешнее соединение.

Это может помочь:

SELECT tbl.SKU
, p.UPC
 , sw.ProductName    
 FROM 
(Select SKU FROM   view_TGB_FutureProducts UNION 
ALL
Select SKU FROM   TGB_Products_SupWoW UNION ALL
Select SKU FROM    view_TGB_FutureProducts_SupWoW
 ) tbl inner join 
[TGB_Production]..[view_TGB_FutureProducts] p on p.Sku 
= tbl.SKU
INNER JOIN [TGB_Production]..[TGB_Products_SupWoW] 
sw ON tbl.SKU = sw.SKU
INNER JOIN [TGB_Production].. 
[view_TGB_FutureProducts_SupWoW] fsw ON tbl.SKU = 
fsw.SKU
and tbl.SKU in ('1839006B', '1839006B', '1839006C')
ORDER BY p.SKU DESC

Другие вопросы по теме