That did it! Thanks so much. This new query runs about a jillion times faster than the old one, which had to execute once for each day in the date range.<br><br><div><span class="gmail_quote">On 7/27/06, <b class="gmail_sendername">
Jason Galea</b> &lt;<a href="mailto:lists@eightdegrees.com.au">lists@eightdegrees.com.au</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>not sure if this will work, but it seems like it should..<br><br>I recently got an order_by working like this..<br><br>order_by =&gt; ['&quot;sum( quantity )&quot; DESC'],<br><br>so maybe..<br><br>group_by =&gt; [<br>
&nbsp;&nbsp; '&quot;DAYOFMONTH(DATE_ADD(date, INTERVAL -12 HOUR))&quot;',<br>&nbsp;&nbsp; 'sensorid',<br>&nbsp;&nbsp; '&quot;DATE_FORMAT(DATE_ADD(date, INTERVAL -12 HOUR),'%b')&quot;'<br>]<br><br><br>cheers,<br><br>J<br><br>Sarah Berry wrote:<br>&gt; I have a query where I need to group by several fields. I set it up in
<br>&gt; SQL first to make sure that it would work on my db, and now I'm trying<br>&gt; to put it into the proper DBIx format. The problem is that DBIx<br>&gt; doesn't seem to like me using column aliases in my group_by clause.
<br>&gt;<br>&gt; I found a message in the archives from this month (July 7, &quot;help on<br>&gt; group_by and select as?&quot;) that verified that I can't use aliases in<br>&gt; group_by. How can I rephrase my query in a way that is tasteful to
<br>&gt; DBIx? Should I just grit my teeth and use the straight SQL that<br>&gt; already works?<br>&gt;<br>&gt; The SQL query:<br>&gt; SELECT<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATE_ADD(date, INTERVAL -12 HOUR) AS newdate,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DAYOFMONTH(DATE_ADD(date, INTERVAL -12 HOUR)) AS dayofmonth,
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATE_FORMAT(DATE_ADD(date, INTERVAL -12 HOUR),'%b') AS month,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count(*)<br>&gt; FROM tblsensorlog<br>&gt; WHERE userid = 3003<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND sensorid &gt; 14 AND sensorid &lt; 19<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND date &gt; '2006-06-01 11:59:59' AND date &lt; '2006-07-01 12:00:00'
<br>&gt; GROUP BY sensorid, month, dayofmonth<br>&gt; ORDER BY newdate, sensorid;<br>&gt;<br>&gt; The prose version: Find out how many times each sensor fired each<br>&gt; night, where &quot;night&quot; is defined as anything between noon of one day
<br>&gt; and noon of the next day, over several nights, for one user.<br>&gt;<br>&gt; The DBIx attempt:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $range = {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userid =&gt; &quot;$userid&quot; ,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; date&nbsp;&nbsp;&nbsp;&nbsp;=&gt; {&nbsp;&nbsp;&nbsp;&nbsp;'&gt;' =&gt; &quot;$tempdate-&gt;{'sql'} 11:59:59&quot;,
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;' =&gt;<br>&gt; ($tempdate2+1)-&gt;{'sql'}.&quot; 12:00:00&quot; },<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sensorid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; { '&gt;' =&gt; '14', '&lt;' =&gt; '19' },<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $fields = {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select&nbsp;&nbsp;=&gt; [&nbsp;&nbsp;&nbsp;&nbsp;&quot;DATE_ADD(date, INTERVAL -12 HOUR)&quot;,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;DATE_FORMAT(DATE_ADD(date,
<br>&gt; INTERVAL -12 HOUR),'%b')&quot;,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;DAYOFMONTH(DATE_ADD(date,<br>&gt; INTERVAL -12 HOUR))&quot;,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'sensorid',<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { count =&gt; '*' }
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;],<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; as&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; [ 'newdate', 'month', 'daymonth',<br>&gt; 'sensorid', 'qcount' ],<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; group_by&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; [ 'daymonth', 'sensorid',
<br>&gt; 'month', 'daymonth' ],<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; order_by&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; [ 'newdate', 'sensorid' ]<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $rs =<br>&gt; $schema-&gt;resultset('Tblsensorlog')-&gt;search($range,$fields);
<br>&gt;<br>&gt; The error message:<br>&gt; DBD::mysql::st execute failed: Unknown column 'newdate' in 'order<br>&gt; clause' at /usr/lib/perl5/vendor_perl/5.8.8/DBIx/Class/Storage/DBI.pm<br>&gt; line 525.<br>&gt; DBD::mysql::st execute failed: Unknown column 'daymonth' in 'field
<br>&gt; list' at /usr/lib/perl5/vendor_perl/5.8.8/DBIx/Class/Storage/DBI.pm<br>&gt; line 525.<br>&gt;<br>&gt; Thanks for your help.<br>&gt;<br>&gt; - Sarah<br>&gt;<br>&gt; _______________________________________________<br>
&gt; List: <a href="http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class">http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class</a><br>&gt; Wiki: <a href="http://dbix-class.shadowcatsystems.co.uk/">http://dbix-class.shadowcatsystems.co.uk/
</a><br>&gt; IRC: irc.perl.org#dbix-class<br>&gt; SVN: <a href="http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/">http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/</a><br>&gt; Searchable Archive: <a href="http://www.mail-archive.com/dbix-class@lists.rawmode.org/">
http://www.mail-archive.com/dbix-class@lists.rawmode.org/</a><br>&gt;<br><br>_______________________________________________<br>List: <a href="http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class">http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
</a><br>Wiki: <a href="http://dbix-class.shadowcatsystems.co.uk/">http://dbix-class.shadowcatsystems.co.uk/</a><br>IRC: irc.perl.org#dbix-class<br>SVN: <a href="http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/">http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
</a><br>Searchable Archive: <a href="http://www.mail-archive.com/dbix-class@lists.rawmode.org/">http://www.mail-archive.com/dbix-class@lists.rawmode.org/</a><br></blockquote></div><br>