Ich habe zwei Tabellen
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;
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;
Ich brauche eine Abfrage, wo nach geschaefts_id gruppiert und die Anzahl verkaufter Artikel pro article_id in einer Spalte errechnet wird. Wenn ich das so mache:
SELECT
`geschaeft_id` FROM verkaufstage,
if(
verkaeufe.artikel_id='1',
SUM(menge),
0
) AS Verkauft
JOIN verkaeufe ON verkaufstage.id = verkaeufe.verkaufstage_id
GROUP BY
`geschaeft_id`
Erhalte ich:
#1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'desd.verkaeufe.artikel_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Das lässt mich dann erst mal ratlos, weil ich article_id ja nicht gruppieren kann ...
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;
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;
Ich brauche eine Abfrage, wo nach geschaefts_id gruppiert und die Anzahl verkaufter Artikel pro article_id in einer Spalte errechnet wird. Wenn ich das so mache:
SELECT
`geschaeft_id` FROM verkaufstage,
if(
verkaeufe.artikel_id='1',
SUM(menge),
0
) AS Verkauft
JOIN verkaeufe ON verkaufstage.id = verkaeufe.verkaufstage_id
GROUP BY
`geschaeft_id`
Erhalte ich:
#1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'desd.verkaeufe.artikel_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Das lässt mich dann erst mal ratlos, weil ich article_id ja nicht gruppieren kann ...
Kommentar