Avatar billede stigma Nybegynder
20. juli 2012 - 14:20 Der er 3 kommentarer og
1 løsning

Er værdien fra dagen før større eller mindre?

Hej!

Prøver på at lave en query der skal se om en værdi er større eller mindre end værdien fra dagen før.


SELECT
    cms_pages.identifier,
    COUNT(cms_statistics_pages.statID) AS hits
FROM cms_pages
LEFT JOIN cms_statistics_pages ON cms_statistics_pages.pageID = cms_pages.pageID
WHERE DATE(cms_statistics_pages.datetime) = '2012-07-20'
GROUP BY cms_pages.identifier


Resultere i:

identifier                    hits
index                        94
siden-er-under-opdatering    22


Jeg tænker lidt jeg skal have en ligende forespørgsel, bare hvor den tar fra dato. 2012-07-19 - Og så alt efter om tallet er større, mindre eller lig skal mit resultat se sådan her ud:


identifier                    hits    hits_yd    growth
index                            94    80        1
siden-er-under-opdatering        22    24        0


Mit problem er så bare hvordan jeg får flettet resten af min query sammen :)

På forhånd tak for hjælpen
Avatar billede gnoname Praktikant
20. juli 2012 - 16:27 #1
Noget i denne stil skulle kunne gøre det:

SELECT
    cp.identifier,
    COUNT(csp1.statID) AS hits,
    COUNT(csp2.statID) AS hits_yesterday,
    IF(COUNT(csp1.statID)>COUNT(csp2.statID),1,0) AS growth
FROM cms_pages cp
LEFT JOIN cms_statistics_pages csp1
      ON csp1.pageID = cp.pageID
WHERE DATE(csp1.datetime) = '2012-07-20'
LEFT JOIN cms_statistics_pages csp2
      ON csp2.pageID = cp.pageID
WHERE DATE(csp2.datetime) = '2012-07-19'
GROUP BY cp.identifier
Avatar billede stigma Nybegynder
23. juli 2012 - 09:50 #2
Har lige prøvet din query, men de resultater jeg får tilbage passer ikke.


Identifier                    hits    hits_yesterday    growth
index                        34404    34404            0
siden-er-under-opdatering    1624    1624                0
vores-historie                9        9                0


Ved ikk lige hvordan den ka komme frem med så store tal, når der kun er 1485 rækker i cms_statistics_pages tabellen
Avatar billede gnoname Praktikant
23. juli 2012 - 12:10 #3
Sorry - jeg fik vist lige dannet et kartesisk produkt :)

Prøv med

SELECT  cp.identifier,
        now.hits  AS hits,
        yest.hits AS hits_yesterday,
        IF(now.hits>yest.hits,1,0) AS growth
FROM    cms_pages cp
LEFT JOIN (
      SELECT  pageID,
              COUNT(pageID)
      FROM    cms_statistics_pages
      WHERE  DATE(datetime) = '2012-07java script:%20void(0);-20'
      GROUP BY pageID) now,
ON    now.pageID = cp.pageID
LEFT JOIN (
      SELECT  pageID,
              COUNT(pageID)
      FROM    cms_statistics_pages
      WHERE  DATE(datetime) = '2012-07-19'
      GROUP BY pageID) yest,
ON    yest.pageID = cp.pageID
Avatar billede stigma Nybegynder
25. juli 2012 - 11:19 #4
Super fedt det der! - Det fungerede bare perfekt, efter et par små fin justeringer ;) - Tusinde tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester