INNER JOIN с условием выхода данных

Я пишу запрос для получения данных из двух таблиц "Продукты и продукты". мой запрос:

SELECT p.*, pi.*
 FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY ProductId, ProductPrice 
 ORDER BY ProductId) AS row_number FROM Products ) p
 INNER JOIN ( SELECT *, ROW_NUMBER() 
 OVER (PARTITION BY ProductId, ImageId,ImagePath 
 ORDER BY ImageId) AS row_number FROM ProductsImages ) pi 
 ON p.ProductId = pi.ProductId
 AND p.row_number = pi.row_number
 Where p.ProductId='131';

Мне нужно написать условие для запуска INNER JOIN, а именно: Внедрить INNER JOIN, если у продуктов ProductImages есть образы предоставления продукта, иначе он должен работать без соединения.и показать только детали продуктов, кроме изображений. этот запрос не показывает деталь продукта как имя и цена если productsImages не имеют никакое изображение. Ограничение: я должен реализовать только INNER JOIN. любезно помогите мне и объясните мне, как я могу реализовать условие if-exit в этом случае. Thanx

2 ответа

В таком случае, почему бы вам не написать left join,

Левое соединение сохраняет все записи из таблицы продуктов даже для несоответствующих записей с таблицей изображений

SELECT p.*, pi.*
 FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY ProductId, ProductPrice 
 ORDER BY ProductId) AS row_number FROM Products ) p
 LEFT OUTER JOIN ( SELECT *, ROW_NUMBER() 
 OVER (PARTITION BY ProductId, ImageId,ImagePath 
 ORDER BY ImageId) AS row_number FROM ProductsImages ) pi 
 ON p.ProductId = pi.ProductId
 AND p.row_number = pi.row_number
 Where p.ProductId='131';


Вы можете попробовать внутренний запрос. Пример:

SELECT p.*, ( SELECT *, ROW_NUMBER() 
OVER (PARTITION BY ProductId, ImageId,ImagePath 
ORDER BY ImageId) AS row_number FROM ProductsImages pi WHERE p.ProductId = pi.ProductId AND p.row_number = pi.row_number )
FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY ProductId, ProductPrice 
ORDER BY ProductId) AS row_number FROM Products ) p
Where p.ProductId='131';

В этом нет никакого участия. :(

licensed under cc by-sa 3.0 with attribution.