sql—如何显示其他表中未包含的所有产品按字符串\u agg

uxh89sit  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(297)

我目前正在工作的一个项目,这是关于产品和变种的一部分。
产品表

productID   productName
-------------------------
1           Perfume X
2           Perfume Y

变量表

variantID   variantName productID
1           color       1
2           volume      1

变量值表

variantValueID  variantValue    variantID
1               Red             1
2               Blue            1
3               Green           1
4               100ML           2
5               50ML            2

产品变量表

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表

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

到目前为止还不错,它显示了所有产品的价格,但当我插入一个新产品没有变种(简单的产品),它没有出现。就我而言,香水y没有任何变体。
我试着使用right和full-join,但没有成功。如何显示所有产品,包括那些没有变体的产品。

bqjvbblv

bqjvbblv1#

我想你只是想 left join :

SELECT p.productName + COALESCE(' ' + STRING_AGG(vv.variantValue,' '), '') as product,
       pv.price
FROM product p LEFT JOIN
     ProductVariant pv
     ON pv.productID = p.productID LEFT JOIN
     ProductDetail pd
     ON pv.productVariantID = pd.productVariantID LEFT JOIN
     VariantValue vv
     ON pd.variantValueID = vv.variantValueID
GROUP BY p.productName, pv.price

相关问题