Problem mam z zapytaniem, które by wyciągneło dane na temat produktu, ilości w magazynie ( wszystkie dostawy ) oraz ilość kupionych towarów.
CREATE TABLE `towardostawa` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_towar` int(11) NOT NULL DEFAULT '0', `ilosc` int(11) NOT NULL DEFAULT '0', `nazwa` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; INSERT INTO `towardostawa` VALUES (1, 1, 10, 'jogurt'); INSERT INTO `towardostawa` VALUES (2, 1, 20, 'jogurt'); INSERT INTO `towardostawa` VALUES (3, 2, 3, NULL); INSERT INTO `towardostawa` VALUES (4, 3, 4, NULL); INSERT INTO `towardostawa` VALUES (5, 3, 5, NULL); INSERT INTO `towardostawa` VALUES (6, 5, 10, NULL); INSERT INTO `towardostawa` VALUES (7, 2, 3, NULL); INSERT INTO `towardostawa` VALUES (8, 4, 7, NULL); CREATE TABLE `zakupy` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_towar` int(11) NOT NULL DEFAULT '0', `ilosc` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; INSERT INTO `zakupy` VALUES (1, 2, 3); INSERT INTO `zakupy` VALUES (2, 4, 1); INSERT INTO `zakupy` VALUES (3, 3, 1); INSERT INTO `zakupy` VALUES (4, 1, 5); INSERT INTO `zakupy` VALUES (5, 1, 3);
To są przykładowe dane ale bardziej chodzi o samą koncepcje.
W zapytaniu jest jeden problem natomiast, jeżeli towar występuje dwa razy w tabeli "towardostawa" to jest dwa razy sumowana ilość kupiona przez klienta.
SELECT DISTINCT t.id_towar,sum(t.ilosc),sum(z.ilosc) FROM towardostawa t LEFT JOIN zakupy z ON t.id_towar=z.id_towar GROUP BY t.id_towar
Może ktoś ma jakiś pomysł jak wyciągnąć poprawne dane.