Jag använder MySQL och har en SELECT-sats, som hämtar värden från olika veckor och olika år. Finns det nåt knep för att få med även alla veckor som inte har ett värde, och få NULL-värden på de veckorna?
Nuvarande kod:
SELECT SUM(daysum) AS weeksum, YEARWEEK(date, 3) AS week
FROM table WHERE user = userID GROUP BY YEARWEEK(date, 3)
Men med den koden så får jag bara ut de veckor som har värden. Vill gärna få med de veckor som inte har värden också. Annars får jag lösa det på annat sätt.
EDIT: Tycker att det är ganska coolt att den här tråden kommer med bland Googles sökresultat 5 min efter att jag skrev tråden.
Hade du använt ms sql 2005 eller nyare hade jag kunnat ge dig ett kod exempel med en CTE.
Nu finns inte CTE:er i mysql och jag har inte arbetat något med MySQL men du skulle kunna göra något i stil med:
create #tmp (id int)
declare @id int
set @id = 1
while @id <= 52
begin
insert into #tmp values (@id)
set @id += 1
end
SELECT SUM(tt.daysum) AS weeksum, t.id as week
FROM #tmp t
left outer join table tt on t.id = YEARWEEK(tt.date, 3) and tt.user = userID
GROUP BY t.id
Hade du använt ms sql 2005 eller nyare hade jag kunnat ge dig ett kod exempel med en CTE.
Nu finns inte CTE:er i mysql och jag har inte arbetat något med MySQL men du skulle kunna göra något i stil med:
Intressant lösning. Visste inte att CTE:er fanns innan. Men finns ju inte i MySQL som sagt. Försöker lösa det i PHP, utanför databasfrågan nu. Det går nog bra det också, men en SQL-lösning hade varit snyggt!