---
title: "Även få med veckor utan värden vid GROUP BY YEARWEEK(d)?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/180799-även-få-med-veckor-utan-värden-vid-group-by-yearweek-d"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "erciz"
published: "2009-10-18T13:08:50.000Z"
updated: "2009-10-18T17:26:55.000Z"
replies: 5
views: 517
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/180799-även-få-med-veckor-utan-värden-vid-group-by-yearweek-d"
---

# Även få med veckor utan värden vid GROUP BY YEARWEEK(d)?

## #1 — erciz, 2009-10-18T13:08Z

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.

Permalänk: https://www.webforum.nu/p/180799

## #2 — adde2, 2009-10-18T15:55Z

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
```

Permalänk: https://www.webforum.nu/p/2208331

## #3 — erciz, 2009-10-18T16:17Z

> **[adde2 skrev:](https://www.webforum.nu/p/1484544)**
>
> 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!

Permalänk: https://www.webforum.nu/p/2208343

## #4 — nitro2k01, 2009-10-18T17:21Z

Jag sitter och pular med en lösning, men sliter mitt hår eftersom jag inte kan få while-loopen jag försöker göra att rulla! (Får syntaxfel hela tiden)

Permalänk: https://www.webforum.nu/p/2208354

## #5 — erciz, 2009-10-18T17:23Z

> **[nitro2k01 skrev:](https://www.webforum.nu/p/1484571)**
>
> Jag sitter och pular med en lösning, men sliter mitt hår eftersom jag inte kan få while-loopen jag försöker göra att rulla! (Får syntaxfel hela tiden)

while-loopen? i MySQL?

Är det nån typ av Stored Procedure du försöker med eller kan man göra loopar å sånt i vanliga SQL-satser? låter intressant.

Permalänk: https://www.webforum.nu/p/2208356

## #6 — adde2, 2009-10-18T17:26Z

mitt exempel var på MS SQL server syntax, 
googlade på while och mysql hittade detta:

```
DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    ...
    SET v1 = v1 - 1;
  END WHILE;
```

istället för att bara köra ett enda sqluttryck borde du väl kunna köra ett script?
mitt ursprungliga kodexempel är att betrakta som ett script...

annars så kan du ju skapa en vanlig tabell som har 52 rader och joina på den istället för en temp tabell som i exemplet.

Permalänk: https://www.webforum.nu/p/2208357

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/180799-även-få-med-veckor-utan-värden-vid-group-by-yearweek-d
