<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Arial","sans-serif";
        font-variant:normal !important;
        color:windowtext;
        text-transform:none;
        font-weight:normal;
        font-style:normal;
        vertical-align:baseline;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>I am trying to use DBIx::Class in a Catalyst application to create a SQL statement that will produce results in a crosstab list. Here is an example of the SQL I am trying to produce.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>select * from crosstab('<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; select event_member_id, round, gross from results where event_id = 21 and round = 6 or round = 7 order by 1, 2')<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; AS results(player integer, Saturday integer, Sunday integer)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>I've attempted to create a custom method titled cross_tab that looks like this:<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; sub cross_tab {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; my $self = shift;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; my $attributes = shift || {};<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; $attributes-&gt;{'select'} = &quot;* from crosstab('<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select event_member_id, round, gross from results where<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event_id = 21 and<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; round = 6 or round = 7<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; order by 1, 2')&quot;;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;$attributes-&gt;{'as'} = [<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'results(player integer, Saturday integer, Sunday integer)',<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; ];<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; return $self-&gt;search({}, $attributes);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>}<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>This creates SQL that looks like this:<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>SELECT me.* from crosstab('<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp; select event_member_id, round, gross from results where <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;event_id = 21 and <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;round = 6 or round = 7 <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;order by 1, 2') <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>FROM results me;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>This is fairly close, but I don't want the &quot;me&quot; appended at the beginning nor do I want to add the addition FROM statement &quot;FROM results me&quot;. I assume this is added when I pass the attributes to the search method.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>Is there a better DBIx::Class method to use besides &quot;search&quot; or is there a way to tell DBIx::Class not to add the additional clause?<o:p></o:p></span></p></div></body></html>