以特定顺序从两个表 mysql 中选择,因为输出必须具有特定结构
Posted
技术标签:
【中文标题】以特定顺序从两个表 mysql 中选择,因为输出必须具有特定结构【英文标题】:Select from two tables mysql in a particular order because the output must have a particular structure 【发布时间】:2021-07-12 18:23:21 【问题描述】:我有一种特殊情况,我必须以特定顺序从两个表中选择特定列。以下是供应商的表格
vid | company | mno | phone |
---|---|---|---|
1 | Xoxoxo | MTN | 2459999999 |
2 | Vovovo | MTN | 2459998888 |
3 | Yrewmi | Vodafone | 2459997777 |
这是 order_content 表。
oid | vendor_id | amount |
---|---|---|
2 | 2 | 2 |
2 | 1 | 4 |
2 | 1 | 7 |
3 | 1 | 1 |
我想为特定的 ordercontent.oid 选择 vendor.company、vendor.mno、SUM(order_content.amount)、vendor.phone,只选择涉及的供应商。我想从供应商表中获取供应商详细信息并总结特定订单的金额。假设订单 2 是 old = 2
。
SELECT DISTINCT vendor.company AS customerName, vendor.mno, SUM(orders_content.price) AS amount
FROM orders_content, vendor
WHERE orders_content.oid = 2
GROUP BY orders_content.oid;
我期待的结果
customerName | mno | amount | phone | description | reference |
---|---|---|---|---|---|
Vooxoo | MTN | 2 | 2459998888 | orders | 154013949 |
Xoxoxo | MTN | 11 | 2459999999 | orders | 78793949 |
【问题讨论】:
您尚未指定两个表之间的关系,因此您将获得两个表的完整叉积。你应该使用 ANSI JOIN 语法,这很难忘记。 由于订单有多个供应商,您希望结果中的哪一个? 你不能指望同时得到不同供应商的同时得到同一个订单的SUM!我在这里看到的最好的,除了金额的总和之外,您还可以获得供应商的数量。 请发布预期结果。 也许您希望GROUP BY orders_content.oid, vendor.vid
获得每个供应商的单独总计?
【参考方案1】:
您需要指定表之间的连接条件,并按vid
分组,而不是oid
。您不需要按oid
分组,因为WHERE
子句限制为单个订单。
SELECT vendor.company AS customerName, vendor.mno, SUM(orders_content.price) AS amount
FROM vendor
JOIN orders_content ON orders_content.vendor_id = vendor.vid
WHERE orders_content.oid = 2
GROUP BY vendor.vid
【讨论】:
以上是关于以特定顺序从两个表 mysql 中选择,因为输出必须具有特定结构的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 将特定列数据从 CSV 导入不同的 MYSQL 表