link przydatny bo rozwiazal ten problem o ktorym pisalem wyzej
chcialbym natomiast pojsc jeszcze krok dalej i zrobic cos podobnego ale bardziej dynamicznie
przykladowa baza i rozwizanie pod linkiem
http://sqlfiddle.com/#!9/c6564/1baza sql
CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) UNSIGNED NOT NULL,
`dzien` date,
`imie` text COLLATE utf8_unicode_ci NOT NULL,
`wartosc` int(11) NOT NULL
) ENGINE=InnoDB;
INSERT INTO `test` (`id`, `dzien`, `imie`, `wartosc`) VALUES
(1, '2015-12-01', 'ewa',5),
(2, '2015-12-02', 'monika',50),
(3, '2015-12-02', 'ewa',4),
(4, '2015-12-05', 'ewa',5);
zapytanie
SELECT `imie`,DATE_FORMAT(`dzien`,'%Y-%m-%d') AS pierwsza_data,
sum(IF(`dzien`='2015-12-01',`wartosc`,0)) AS '0',
sum(IF(`dzien`='2015-12-02',`wartosc`,0)) AS '1',
sum(IF(`dzien`='2015-12-03',`wartosc`,0)) AS '2',
sum(IF(`dzien`='2015-12-04',`wartosc`,0)) AS '3',
sum(IF(`dzien`='2015-12-05',`wartosc`,0)) AS '4'
FROM `test`
GROUP BY `imie`
problem jest taki ze to nie do konca mi liczy jak powinno
chodzi o to ze wartosc w kolumnie "0" dla moniki powinna wynosic 50
a teraz ta wartosc jest w jedynce
problem jest w tym ze nazwa kolumny as 0, as 1 itd powinna byc tworzona dynamicznie
cos w ten sposob, tylko ze to nie dziala
SELECT `imie`,DATE_FORMAT(`dzien`,'%Y-%m-%d') AS pierwsza_data,
sum(IF(`dzien`='2015-12-01',`wartosc`,0)) AS ilosc_dni(`dzien` - pierwsza_data),
sum(IF(`dzien`='2015-12-02',`wartosc`,0)) AS ilosc_dni(`dzien` - pierwsza_data),
sum(IF(`dzien`='2015-12-03',`wartosc`,0)) AS ilosc_dni(`dzien` - pierwsza_data),
sum(IF(`dzien`='2015-12-04',`wartosc`,0)) AS ilosc_dni(`dzien` - pierwsza_data),
sum(IF(`dzien`='2015-12-05',`wartosc`,0)) AS ilosc_dni(`dzien` - pierwsza_data)
FROM `test`
GROUP BY `imie`
czy jest jakas opcja zeby cos takiego zrobic?