Jeg udfører én query flere gange, hvor jeg hver gang forøger INTERVAL med 30.. Det må være muligt at samle disse queries til én.
1) SELECT COUNT(groupname) FROM mytable WHERE groupname = '<groupname>' AND DATE_SUB(NOW(),INTERVAL 60 DAY) <= row_date AND AND DATE_SUB(NOW(),INTERVAL 30 DAY) > row_date; 2) SELECT COUNT(groupname) FROM mytable WHERE groupname = '<groupname>' AND DATE_SUB(NOW(),INTERVAL 90 DAY) <= row_date AND AND DATE_SUB(NOW(),INTERVAL 60 DAY) > row_date; 3) SELECT COUNT(groupname) FROM mytable WHERE groupname = '<groupname>' AND DATE_SUB(NOW(),INTERVAL 120 DAY) <= row_date AND AND DATE_SUB(NOW(),INTERVAL 90 DAY) > row_date;
Og så videre. Det skal udføres 5 gange, med én query, sådan så jeg kan retrieve data som følger: 60-30,90-60,120-90,osv.
Du kan bruge UNION for at sætte resultatet af en forespørgsel efter en anden - hvis vi lige nøjes med de tre du har postet her vil det se sådan ud:
SELECT COUNT(groupname) FROM mytable WHERE groupname = '<groupname>' AND DATE_SUB(NOW(),INTERVAL 60 DAY) <= row_date AND DATE_SUB(NOW(),INTERVAL 30 DAY) > row_date UNION SELECT COUNT(groupname) FROM mytable WHERE groupname = '<groupname>' AND DATE_SUB(NOW(),INTERVAL 90 DAY) <= row_date AND DATE_SUB(NOW(),INTERVAL 60 DAY) > row_date UNION SELECT COUNT(groupname) FROM mytable WHERE groupname = '<groupname>' AND DATE_SUB(NOW(),INTERVAL 120 DAY) <= row_date AND DATE_SUB(NOW(),INTERVAL 90 DAY) > row_date;
Hvis vi siger de enkelte forespørgsler returnerer hhv. 50, 20 og 30, så vil resultatet fra denne store forespørgsel blive:
50 20 30
Med andre ord, kommer det ud i samme rækkefølge som det kommer ind.
Synes godt om
Ny brugerNybegynder
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.