В настоящее время я работаю над частью проекта, который касается продуктов и вариантов.
Таблица продуктов
productID productName
-------------------------
1 Perfume X
2 Perfume Y
Таблица вариантов
variantID variantName productID
1 color 1
2 volume 1
Таблица VariantValue
variantValueID variantValue variantID
1 Red 1
2 Blue 1
3 Green 1
4 100ML 2
5 50ML 2
ProductVariant Table
productVariantID productID sku price
1 1 111 50.00
2 1 222 30.00
4 1 333 15.00
5 2 444 10.95
ProductDetail Table
ProductDetailID productVariantID variantValueID
1 1 1
2 1 4
3 2 1
4 2 5
5 4 2
6 4 5
отношение
и когда я вызываю этот запрос. .
SELECT p.productName + ' ' + STRING_AGG(vv.variantValue,' ') product,pv.price
FROM
product p
JOIN ProductVariant pv ON pv.productID = p.productID
JOIN ProductDetail pd ON pv.productVariantID = pd.productVariantID
join VariantValue vv ON pd.variantValueID = vv.variantValueID
GROUP BY pd.productVariantID, p.productName,pv.price
Я получаю следующий результат ..
product price
Perfume X Red 100ML 50.00
Perfume X Red 50ML 30.00
Perfume X Blue 50ML 15.00
Пока все хорошо, отображаются все товары с ценами, но когда я вставляю новый товар без вариантов ( простой товар ) не оказалось. В моем случае Perfume Y не имеет вариантов.
Я пытался использовать правильное и полное соединение, но безуспешно. Как я показываю все товары, в том числе те, у которых нет вариантов.