Given are two tables with with a common id and integer values:
table1: table2:
| id | val | | id | val |
+------+------+ +------+------+
| 1 | 0 | | 1 | 1 |
| 2 | 1 | | 1 | 1 |
| 3 | 1 | | 2 | 2 |
| 4 | 2 | | 2 | 2 |
| 5 | 2 | | 3 | 2 |
| 3 | 2 |
| 3 | 2 |
| 4 | 6 | <id shifted for readability>
How to archive this result in one query:
result-table:
| id | val |
+------+------+
| 1 | 2 |
| 2 | 5 |
| 3 | 7 |
| 4 | 8 |
| 5 | 2 |
EDIT:
Following some answers I got:
SELECT t1.id, t1.val + SUM(t2.val) AS val
FROM table1 t1
LEFT JOIN table2 t2 ON (t1.id = t2.id)
GROUP BY t1.id
what gives me:
id val
1 2
2 5
3 7
4 8
5 NULL
But 2 plus nothing = 2 and not NULL. Is there a different way?
You forgot to
group by:of course, I’m not sure why you’re trying to subtract the values in your sample query. maybe you meant
+instead?