Mam taki mały problem. W dwóch tabelach są przechowywane dane na temat zamówionych towarów ( ilość towaru jest najbardziej interesująca ) i dane dotyczące ile danego towaru zostało kupionego.
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.
Ten post edytował Cienki1980 21.01.2007, 16:26:44