---
title: "Hämta antal från olika tidsperioder i en och samma query"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/188167-hämta-antal-från-olika-tidsperioder-i-en-och-samma-query"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "timmyrosen"
published: "2011-10-29T23:42:55.000Z"
updated: "2011-10-31T04:42:57.000Z"
replies: 3
views: 815
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/188167-hämta-antal-från-olika-tidsperioder-i-en-och-samma-query"
---

# Hämta antal från olika tidsperioder i en och samma query

## #1 — timmyrosen, 2011-10-29T23:42Z

Hej 

Är verkligen ingen hejjare på mysql så hoppades på att få lite hjälp här. 

Det är så att jag vill hämta ut antalet medlemmar som registrerade sig från olika tidsperioder. Jag har satt upp tidsstämplarna och gjort en query och den returnerar den första querien men resten skrivs inte ut. 

Här är koden: 

```php
$date['month'] = mktime(0, 0, 0, date('m'), 1, date('Y'));
$date['week'] = mktime(0, 0, 0, date('m'), date('d'), date('Y')) - ((date('N')-1)*3600*24);
$date['yesterday'] = mktime(0, 0, 0, date('m'), date('d')-1, date('Y'));
$date['today'] = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$date['now'] = mktime(time('H'), time('i')-20, date('s'), date('m'), date('d'), date('Y')); 
 
$members = mysql_query("(SELECT COUNT(id) AS m_total FROM accounts) 
                  UNION 
               (SELECT COUNT(id) AS m_month FROM accounts WHERE registered >= '".$date['month']."') 
                  UNION 
               (SELECT COUNT(id) AS m_week FROM accounts WHERE registered >= '".$date['week']."')
                  UNION
               (SELECT COUNT(id) AS m_yesterday FROM accounts WHERE registered >= '".$date['yesterday']."')
                  UNION
               (SELECT COUNT(id) AS m_today FROM accounts WHERE registered >= '".$date['today']."')
");
$m = mysql_fetch_assoc($members);
```

Den ger ett värde till m_total men allt annat får inget värde. Någon som kan hjälpa mig med detta eller rent av göra en bättre query. Som sagt, är inte så bra på MySQL. 

Tacksam för hjälp

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

## #2 — @nders, 2011-10-30T04:52Z

Det din SQL-fråga returnerar är ett resultat med en kolumn, som heter m_total, med x antal rader (du kan inte vara säker på att du får ut värden för alla dina fall - union ger ett distinct resultat.)

Det enklaste är nog att köra dessa frågor som rena subqueries istället för att använda union. Skulle kunna se ut så här:

```
$members = mysql_query("SELECT COUNT(id) AS m_total,  
                  (SELECT COUNT(id) FROM accounts WHERE registered >= '".$date['month']."') as m_month,
                  (SELECT COUNT(id) FROM accounts WHERE registered >= '".$date['week']."') as m_week,
                  (SELECT COUNT(id) FROM accounts WHERE registered >= '".$date['yesterday']."') as m_yesterday,
                  (SELECT COUNT(id) FROM accounts WHERE registered >= '".$date['today']."') as m_today FROM accounts
");
```

Tänk också på att m_yesterday-delen även inkluderar dagens registreringar. Är det så du vill ha det?

mvh

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

## #3 — timmyrosen, 2011-10-30T13:15Z

Tack så mycket, den querien fungerade mycket bättre :)

Nej, jag missade det där med m_yesterday, tack för att du sa det :)

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

## #4 — @nders, 2011-10-31T04:42Z

Varsågod!

Klicka gärna på "Markera som lösning" vid mitt inlägg.

<http://www.webforum.nu/faq.php?faq=vb_faq#faq_faq_acceptance>

mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/188167-hämta-antal-från-olika-tidsperioder-i-en-och-samma-query
