(抱歉标题和背景不好,我不是以英语为母语的人)
想象一下这是我的数据库表:
Table #1: Parent
╔══════════╦═════════════════╦═══════╗
║Child_id ║Primary key - AI ║ int ║
╠══════════╬═════════════════╬═══════╣
║parent_id ║Index-Forign_key ║ int ║
║══════════╬═════════════════╬═══════╣
║title ║ - ║varchar║
╚══════════╩═════════════════╩═══════╝
Table #2: Paid
╔══════════╦═════════════════╦═══════╗
║Paid_id ║Primary key - AI ║ int ║
╠══════════╬═════════════════╬═══════╣
║child_id ║Index-Forign_key ║ int ║
║══════════╬═════════════════╬═══════╣
║paid_price║ - ║int ║
╚══════════╩═════════════════╩═══════╝
现在我想要一个查询,返回paid_price
的总和,parent_id
我的意思是查询从child_id
表中获取所有parent
,然后从child_id
表中获取paid_price
的每个paid
得到。
想象一下这些是我的桌子'数据:
Table: parent (data)
╔══════════╦══════════╦═══════╗
║ Child_id ║parent_id ║ title ║
╠══════════╬══════════╬═══════╣
║ 1 ║25 ║bla-bla║
║══════════╬══════════╬═══════╣
║ 2 ║25 ║bla-bla║
║══════════╬══════════╬═══════╣
║ 3 ║5 ║bla-bla║
║══════════╬══════════╬═══════╣
║ 4 ║25 ║bla-bla║
╚══════════╩══════════╩═══════╝
Table: paid (data)
╔══════════╦══════════╦════════════╗
║ Paid_id ║Child_id ║ paid_price ║
╠══════════╬══════════╬════════════╣
║ 1 ║1 ║1000000 ║
║══════════╬══════════╬════════════╣
║ 2 ║2 ║2500000 ║
║══════════╬══════════╬════════════╣
║ 3 ║1 ║3506000 ║
║══════════╬══════════╬════════════╣
║ 4 ║1 ║1700000 ║
╚══════════╩══════════╩════════════╝
我希望我能够很好地描述我需要的东西
*注意:这不是我的数据库结构。我只是想查询。写我真正的数据库表是比较难的。
答案 0 :(得分:1)
您可以使用GROUP BY
和SUM()
https://dev.mysql.com/doc/refman/5.7/en/group-by-modifiers.html
您可以通过以下查询轻松获取付费表格中每个Child_id的paid_prices的总和:
SELECT Child_id, SUM(paid_price) FROM paid GROUP BY Child_id;
如果您希望标题具有相同的结果,则可以将ON paid.Child_id = parent.Child_id
作为连接条件加入。
答案 1 :(得分:0)
目前我没有一种简单的方法来测试它,但基本上你需要在child_id上加入两个表,然后在将sum()聚合函数应用于paid_price时按parent_id分组。这些方面的东西:
with J as( select P.parent_id,Q.paid_price from parent P
inner join paid Q on P.Child_id=Q.Child_id)
select parent_id, sum(paid_price) from J group by parent_id