<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> </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"'> 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"'> 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> </o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> sub cross_tab {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> my $self = shift;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> my $attributes = shift || {};<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"'> $attributes->{'select'} = "* from crosstab('<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> 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"'> event_id = 21 and<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> round = 6 or round = 7<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> order by 1, 2')";<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"'> $attributes->{'as'} = [<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> '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"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> return $self->search({}, $attributes);<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"'>}<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> </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"'> 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"'> event_id = 21 and <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> round = 6 or round = 7 <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'> 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> </o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>This is fairly close, but I don't want the "me" appended at the beginning nor do I want to add the addition FROM statement "FROM results me". 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> </o:p></span></p><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>Is there a better DBIx::Class method to use besides "search" or is there a way to tell DBIx::Class not to add the additional clause?<o:p></o:p></span></p></div></body></html>