Buonasera,
ho le seguenti tabelle
tab1
id_tab1 | ordinato | id_articolo
tab2
id_tab2 | id_articolo | cod_colore
la relazione tra tab1 e tab2 è uno a molti
ho la seguente query che mi recupera la somma degli articoli ordinati
select sum(tab1.ordinato) as somma from tab1 left join tab2 on tab2.id_articolo = tab1.id_articolo
il problema c'è quando ho un articolo con più colori e quindi mi va a sommare più volte l'ordine es
tab1
1 | 5 | 20
tab2
5 | 20 | ff0000
6 | 20 | ff00ff
eseguendo la query ottengo somma = 10
cosa sbaglio?
Codice PHP:
CREATE TABLE `tab1` (
`id_tab1` int(3) NOT NULL auto_increment,
`ordinato` int(2) NOT NULL,
`id_articolo` int(2) NOT NULL,
PRIMARY KEY (`id_tab1`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `tab1` VALUES (1, 5, 20);
CREATE TABLE `tab2` (
`id_tab2` int(3) NOT NULL auto_increment,
`id_articolo` int(2) NOT NULL,
`cod_colore` varchar(6) NOT NULL,
PRIMARY KEY (`id_tab2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `tab2` VALUES (1, 20, 'ff0000');
INSERT INTO `tab2` VALUES (2, 20, 'ff00ff');
SELECT SUM( tab1.ordinato ) AS somma
FROM tab1
LEFT JOIN tab2 ON tab2.id_articolo = tab1.id_articolo
Grazie