如何进行这一对多的查询?

时间:2015-10-08 18:59:23

标签: mysql sql

我需要帮助才能做出这个选择。

Table 1

Table 2

这是2张桌子。 第一张表: - 有Unique / Primary buyID-s(我们可以说这里的buyID是和Order) -distID-s可以很多。

第二张表:

- 此表没有唯一的标识符
-same buyID这里有一个以上(这里基本上是buyID提供订单的更多细节,从第一张表中提供该订单的产品清单(buyID)。

我想做什么,但我无法想出如何编写查询:
- 选择所有buyID-s distID = 119从表1(buyID-s将是1724,1833和1890)
- 从表2中,总结数量,其中buyID(来自table2)= buyID(来自table1)。

因此我必须: distID = 119
      buyID = 1724 --------数量= 25(作为例子)
      buyID = 1833 --------量= 60
      buyID = 1890 --------数量= 23(如果还有product_number列表,将会很棒)

我希望这是有道理的。 我没有太多的经验,我想@一小时,我肯定不是太难,但这让我感到很生气...

我在等待帮助。 感谢

2 个答案:

答案 0 :(得分:0)

使用LEFTJOINGROUP BY

select t1.distID, t2.buyID,sum(t2.quantity) as quantity
from table1 t1
left join table2 t2 on t2.buyID = t1.buyID
where t1.distID = 119
group by t1.distID, t2.buyID

如果您还想在结果集中包含 product_number ,那么您必须使用像MAX(product_number) as product_number这样的聚合函数来选择它们,因为查询使用 GROUP BY 子句。

答案 1 :(得分:0)

从表2中选择总和(数量)中的buyID(从表1中选择buyID,其中distID = 119)