【发布时间】:2016-04-06 02:32:43
【问题描述】:
想象一下这些是我的数据库的表:
Table #1: child
╔══════════╦═════════════════╦═══════╗
║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 ║
╚══════════╩═════════════════╩═══════╝
这是我的表格值:
Table: child (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 ║100 ║
║══════════╬══════════╬════════════╣
║ 2 ║2 ║250 ║
║══════════╬══════════╬════════════╣
║ 3 ║1 ║35 ║
║══════════╬══════════╬════════════╣
║ 4 ║1 ║17 ║
╚══════════╩══════════╩════════════╝
我有一个查询,它从子表中返回(获取)所有 child_id,然后通过该 ids 返回它们每个的 sumpaid_price。
这是我的查询:
SELECT child.Child_id, child.parent_id, sum(paid.paid_price)
FROM paid
JOIN child ON child.Child_id = paid.Child_id
WHERE child.parent_id =25
group by child.Child_id, child.parent_id
我想要这个:现在我的查询运行良好,但是当paid 表中没有child_id 时,查询不会返回它。
我的意思是我想要所有child_id 天气他们是否在paid 表中。如果它们不返回 0 (现在我认为它是 null 并且不返回)
请查看我的演示(上面的链接)并查看如果我输入 parent_id=25 它将返回 2 行(总和),因为 child_id = 3 确实不存在于 paid 中并且不会在结果中返回它
【问题讨论】:
标签: mysql sql database performance