mysql - 这个 SQL 查询/连接可能吗?
问题描述
我正在学习 SQL,目前正在研究 SQL 连接。在 MySQL 中使用不同的连接,我想知道这是否可能,将它全部放在 1 列中。
DB有3个表:
- 商店
- 价格
- 产品
产品看起来像:
- product_id
- 产品名称
店铺长这样:
- shop_id
- 店铺名称
价格如下:
- price_id
- 价格金额
- product_id
- shop_id
所以最大的问题是:是否可以将它组合起来使其输出如下:product_id,product_name,price_shop1,price_shop2,price_shop3
到目前为止,我的输出类似于 product_id、price_amount、shop_id、shop_name,但在 3 个不同的行上。
可以做到吗?如果可能的话,我在寻找什么样的加盟?
我不知道我可以在哪里使用它,只是想学习。
谢谢。
问候,迈克
解决方案
不完全是,我们正在讨论使用动态列数发出请求,因为您事先不知道有多少商店使用该产品。这是不支持的。
但是您可以有一个列,其中所有价格连接并以逗号分隔(或您选择的任何其他符号)。
例如:
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
轻松处理。
推荐阅读
- r - R,macosx,Rscript 致命错误:为“-e”创建临时文件失败
- python - 家庭作业:如何在不使用 linalg.norm 的情况下计算两个向量之间的距离?
- node.js - 访问 Azure 计费 API
- awk - sed 在第二个管道符号前面的所有内容
- symfony - 如何在 twig 中访问关系 imageName(使用 VichUploaderBundle)
- php - Codeigniter 3.1.4 发布请求未收到表单数据参数
- json - 对数组中的某些对象属性进行 JSON 模式条件检查
- sql - SQL - 按结果分组
- macos - 使用具有提升权限的 Touch ID
- c# - 在链接实体中构建具有特定字段的 lambda 表达式树