我正在学习SQL,目前正在查看SQL连接。 在MySQL中使用不同的联接进行测试,我想知道是否有可能将所有这些合并为一列。
DB有3个表:
产品外观如下:
商店看起来像:
价格如下:
因此,最大的问题是:是否可以将其组合以使其输出如下: product_id,product_name,price_shop1,price_shop2,price_shop3
到目前为止,我的输出就像 product_id,price_amount,shop_id,shop_name,但在3个不同的行上。
可以做到吗?如果可能,我正在寻找什么样的加入方式?
我没有看到我可以在哪里使用它,只是尝试学习。
谢谢。
关于, 迈克
答案 0 :(得分:0)
不完全是,我们正在谈论使用动态列数进行请求,因为您事先不知道有多少家使用该产品的商店。不支持。
但是您可以在一个列中将所有价格连接起来并用逗号分隔(或您选择的任何其他符号)。
例如:
SELECT
a.product_id,
a.product_name,
GROUP_CONCAT(b.price_amount SEPARATOR ';') prices
FROM
products a INNER JOIN prices b ON a.product_id = b.product_id
GROUP BY a.product_id
这将为您提供产品列表和所有可用价格的列表,尽管您必须解析为字符串形式。
如果您还希望包括这些产品所在的商店,则建议您不要这样做。由于无论哪种方式都需要进行一些解析,因此只需获取完整列表,其中将包含产品重复项,但您可以按product_id
进行排序以方便地进行处理。