La cosa sembra molto più primitiva...
procedimento per capire cosa fare in questi casi...
1) analizzare le due tabelle
SELECT * FROM acquisti;
SELECT * FROM vendite;
risultato:
+-------+-----------+-------+
| acqId | titolo | quant |
+-------+-----------+-------+
| 1 | pippo | 10 |
| 2 | pippo | 4 |
| 3 | pippo | 5 |
| 4 | pluto | 2 |
| 5 | pluto | 2 |
| 6 | paperino | 20 |
| 7 | basettoni | 34 |
+-------+-----------+-------+
+-------+----------+-------+
| venId | titolo | quant |
+-------+----------+-------+
| 1 | pippo | 2 |
| 2 | pippo | 2 |
| 3 | pippo | 5 |
| 4 | pluto | 2 |
| 6 | paperino | 2 |
+-------+----------+-------+
dobbiamo compattare le due tabelle..
SELECT titolo,
SUM(quant) as acquistati
FROM acquisti a
group by titolo;
SELECT titolo,
SUM(quant) as venduti
FROM vendite b
group by titolo;
otteniamo:
+-----------+------------+
| titolo | acquistati |
+-----------+------------+
| pippo | 19 |
| pluto | 4 |
| paperino | 20 |
| basettoni | 34 |
+-----------+------------+
+----------+---------+
| titolo | venduti |
+----------+---------+
| pippo | 9 |
| pluto | 2 |
| paperino | 2 |
+----------+---------+
a questo punto abbiamo la tabella a e la tabella b compattate...
basta una semplice left join (possiamo avere acquisti senza vendite ma non vendite senza acquisti) tra tabella a e tabella b sostituendo le select ad a ed a b aggiungendo il saldo...
SELECT a.titolo, acquistati, (IFNULL(venduti, 0)) as venduti , (acquistati-IFNULL(venduti, 0)) as potafoglio //tabella C di risposta
FROM (SELECT titolo, // tabella A
SUM(quant) as acquistati
FROM acquisti
group by titolo) a
left join (SELECT titolo, // tabella B
IFNULL(SUM(quant), 0) as venduti
FROM vendite
group by titolo) b on a.titolo=b.titolo;
risultato:
+-----------+------------+---------+------------+
| titolo | acquistati | venduti | potafoglio |
+-----------+------------+---------+------------+
| pippo | 19 | 9 | 10 |
| pluto | 4 | 2 | 2 |
| paperino | 20 | 2 | 18 |
| basettoni | 34 | 0 | 34 |
+-----------+------------+---------+------------+
dividi sempre il problema a passi più semplici.