Ich hatte dasselbe Problem schon mal, dachte es wäre gelöst bis ich den ONLY_FULL_GROUP_BY Modus aktiviert habe. Aber ich fang lieber sauber von vorne an:
Was ich als Ergebnis brauche:
Code:
DROP TABLE IF EXISTS `verkaeufe`; CREATE TABLE IF NOT EXISTS `verkaeufe` ( `id` int(11) NOT NULL AUTO_INCREMENT, `verkaufstage_id` int(11) NOT NULL, `artikel_id` int(11) NOT NULL, `menge` int(11) NOT NULL, `VK` float NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1; -- -- Daten für Tabelle `verkaeufe` -- INSERT INTO `verkaeufe` (`id`, `verkaufstage_id`, `artikel_id`, `menge`, `VK`) VALUES (1, 1, 1, 2, 1), (2, 1, 2, 3, 1), (3, 2, 1, 3, 1), (4, 2, 2, 4, 1), (5, 3, 1, 1, 1), (6, 3, 1, 1, 1), (7, 4, 1, 1, 1), (8, 5, 1, 1, 1), (9, 5, 2, 2, 1); COMMIT; DROP TABLE IF EXISTS `verkaufstage`; CREATE TABLE IF NOT EXISTS `verkaufstage` ( `id` int(11) NOT NULL AUTO_INCREMENT, `geschaeft_id` int(11) NOT NULL, `datum` date NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1; -- -- Daten für Tabelle `verkaufstage` -- INSERT INTO `verkaufstage` (`id`, `geschaeft_id`, `datum`) VALUES (5, 1, '2019-01-16'), (2, 2, '2019-01-14'), (4, 2, '2019-01-15'), (1, 1, '2019-01-14'), (3, 1, '2019-01-15'); COMMIT; SELECT geschaeft_id, COUNT(geschaeft_id) as Verkaufstage, SUM(menge*VK) AS Umsatz FROM verkaeufe JOIN verkaufstage ON verkaeufe.verkaufstage_id = verkaufstage.id GROUP BY geschaeft_id
geschaeft_id Verkaufstage Umsatz 1 6 10 2 3 8
Code:
geschaeft_id Verkaufstage Umsatz 1 3 10 2 2 8
Kommentar