ray Posted July 12, 2008 Report Share Posted July 12, 2008 (edited) man datubāzē ir tabula info (id, datums, apmekletaji, pirkumi), datuma vērtība glabājas kā time(), bet pa dienām (piem. datumā 11.07.2008 ir vētība 1215723600). vajadzētu, lai vaicājums izdrukā sadalījumu pa mēnešiem (kuros ir notikusi kkāda darbība) ar kopējo apmeklētāju skaitu un pirkumu skaitu. jau n-tās stundas mēģinu, bet šādu vaicajumu neizdodas izveidot, varbūt kādas ir kkas iesakāms kā to varētu izdarīt? Edited July 12, 2008 by ray Link to comment Share on other sites More sharing options...
Roze Posted July 12, 2008 Report Share Posted July 12, 2008 Šis gan sanāks neoptimizēts kverijs (un ja es saprotu tabulas struktūru) un uz lielu tabulu būtu jātaisa savādāk bet nu principā: SELECT DATE_FORMAT(datums,'%Y-%m') AS dat, COUNT(*), SUM(apmekletaji), SUM(pirkumi) FROM info GROUP BY dat; Link to comment Share on other sites More sharing options...
Aleksandrs Posted July 12, 2008 Report Share Posted July 12, 2008 Varbūt šāds pieprasījums būtu optimālāks. for($i=1; $i<=12; $i++){ $month = mktime(0,0,0, $i, 1, 2008); $month2 = mktime(0,0,0, $i, date('t', $month), 2008); $query = 'SELECT COUNT(*), SUM(apmekletaji), SUM(pirkumi) FROM `tabula` WHERE `datums`>='.$month.' AND `datums`<='.$month2; $results = mysql_query($query); $row = mysql_fetch_row($results); echo date('m', $month).' '.$row[0]; } Link to comment Share on other sites More sharing options...
Roze Posted July 12, 2008 Report Share Posted July 12, 2008 Ar ko tad 12 pieprasījumi sanāk optimālāki? Bez tam selectējot pēc lauka uz kura drošvien nav indeksa - kas nozīmē ka tabulai jābrauc cauri 12 reizes anyway ... :) Link to comment Share on other sites More sharing options...
Aleksandrs Posted July 12, 2008 Report Share Posted July 12, 2008 Aizmirsu piebilst, ka manā variantā indeksu arī vajag datuma laukam. Un ja ir indekss, tad nebūs ātrāk ar 12 vienkāršiem pieprasījumiem nekā ar grupēšanu? Link to comment Share on other sites More sharing options...
Recommended Posts