Mam jedną tabelę z pewnymi statystykami na datę, które chcę wylistować z MySQL. Dla niektórych terminach nie będzie statystyka, więc wynik powinien wyglądać mniej więcej tak:
01.03.2013: 3
2.03.2013: 2
03.03.2013: 0
2013-03 -04: 1MySQL LEFT JOIN z GROUP BY i WHERE IN (sub zapytanie)
Pomyślałem, że wypełnienie luk przez 0-zero może zostać rozwiązane przez osobną tabelę ze wszystkimi możliwymi datami i LEWYM DOŁĄCZEM. Jak na razie dobrze.
statystyk (wyświetlenia) znajduje się w tabeli „campaigndata”:
id - int(11) date - date campaignid - int(11) impressions - int(11)
Ale chcę dostać tylko niektóre statystyki. Mówiąc dokładniej, chcę tylko wierszy z "campaigndata", gdzie "campaignid" znajduje się w tabeli "filterfilter" z "campaigntype" ustawionym na 1 (jako przykład).
To jest stół 'campaignfilter':
id - int(11) campaigntype - int(11) campaignid - int(11)
Ktoś ma pojęcia, w jaki sposób można to zrobić?
PS: Struktura tabeli "campaigndata" jest prawie zablokowana, ponieważ opiera się na automatycznym importowaniu z zewnętrznego systemu.
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');
pożądanego rezultatu
2013-03-01: 0
2013-03-02: 0
2013-03-03: 200
2013-03-04: 0
2013-03-05: 100
przykro mi, że nie wydają się działać. Chcę SUMA (a.impressions), a nie COUNT (b.campaignid). – sylling
Czy możesz podać przykładowe rekordy z pożądanym wynikiem? –
Żądany wynik i przykładowe zapisy: http://pastie.org/6440022 – sylling