我需要帮助进行此选择。

mysql - 如何进行一对多查询?-LMLPHP

mysql - 如何进行一对多查询?-LMLPHP

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

第二张表:

-此表没有唯一的标识符
-此处的相同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列表,那将很棒)

我希望这有道理。
我没有太多经验,我正在尝试一个小时,我确定不是太辛苦,但这让我很生气。

我正在等待一点帮助。
谢谢

最佳答案

使用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子句。

关于mysql - 如何进行一对多查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33023862/

10-12 22:22