Ich habe eine Tabelle mit einigen Statistiken pro Datum, die ich mit MySQL aufgelistet werden soll. Für einige Tage, wird es keine Statistiken sein, so dass das Ergebnis wie folgt aussehen sollte:
2013.03.01: 3
2013.03.02: 2
2013.03.03: 0
2013-03 -04: 1MySQL LEFT JOIN mit GROUP BY und WHERE IN (Unterabfrage)
Ich fand heraus, dass das Füllen der Lücken mit 0 -zero mit einer separaten Tabelle mit allen möglichen Daten und LEFT JOIN gelöst werden konnte. So weit, ist es gut.
Die Statistiken (Impressionen) ist in der Tabelle 'campaigndata':
id - int(11) date - date campaignid - int(11) impressions - int(11)
Aber ich will nur einige der Statistiken erhalten. Um genauer zu sein, ich möchte nur die Zeilen von 'campaigndata', wo 'campaignid' in der Tabelle 'campaignfilter' ist und 'campaignntype' auf 1 gesetzt ist (als Beispiel).
Das ist der Tisch 'campaignfilter':
id - int(11) campaigntype - int(11) campaignid - int(11)
Wer Ahnung, wie dies geschehen könnte?
PS: Die Struktur der Tabelle 'campaigndata' ist weitgehend gesperrt, da sie auf einem automatischen Import von einem externen System basiert.
SAMPLE RECORDS
CREATE TABLE demo_campaigndata (
id int(11) NOT NULL AUTO_INCREMENT,
date date NOT NULL,
campaignid int(11) NOT NULL,
impressions int(11) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO demo_campaigndata (id, date, campaignid, impressions) VALUES
(1, '2013-03-03', 1, 100),
(2, '2013-03-03', 2, 100),
(3, '2013-03-03', 3, 100),
(4, '2013-03-04', 2, 100),
(5, '2013-03-05', 1, 100),
(6, '2013-03-05', 2, 100);
CREATE TABLE demo_campaignfilter (
id int(11) NOT NULL AUTO_INCREMENT,
campaigntype int(11) NOT NULL,
campaignid int(11) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO demo_campaignfilter (id, campaigntype, campaignid) VALUES
(1, 1, 1),
(2, 1, 3);
CREATE TABLE demo_calendar (
date date NOT NULL,
PRIMARY KEY (date)
);
INSERT INTO demo_calendar (date) VALUES
('2013-03-01'),
('2013-03-02'),
('2013-03-03'),
('2013-03-04'),
('2013-03-05');
Gewünschtes Ergebnis
2013-03-01: 0
2013-03-02: 0
2013-03-03: 200
2013-03-04: 0
2013-03-05: 100
Es tut mir Leid, das scheint nicht zu funktionieren. Ich möchte SUM (a.impressions), nicht COUNT (b.campaignid). – sylling
können Sie Beispieldatensätze mit dem gewünschten Ergebnis geben? –
Gewünschtes Ergebnis und Beispieldatensätze: http://pastie.org/6440022 – sylling