Hi Alan,

I'm assuming you've already looked through the documentation? There's a great cookbook and example page at
http://www.annocpan.org/~DANIELTWC/DBIx-Class-0.06999_01/lib/DBIx/Class/Manual.pod

I recently changed our web app from using SQL to using DBIx. The easiest way I found to make the switch was to start with a simple DBIx "query" and work my way up to the complex query I really wanted, rather than trying to convert an existing complex SQL query to DBIx all at once. Too much can go wrong!

I can't give you a whole lot of specific pointers on your particular query, being a beginner myself, but I hope this points you in the right direction.

Sarah

On 6/27/06, Alan Hicks <[EMAIL PROTECTED]> wrote:
Hi,

I've just started to use DBIx with Catalyst and think it's truly great
and simplifies much of what I need to do.

Alas I have a query that I can't get my head around so any advice is
appreciated.  I'm trying to get a list of available categories and sub
categories for a catalogue I am looking after and have previously got
this using the following sql:-

SELECT  c.id,
         c.name,
         sc.id,
         sc.name,
         CASE
                 WHEN cc.id IS NOT NULL THEN 1
                 ELSE 0
                 END AS cat_cat,
         CASE
                 WHEN csc.id IS NOT NULL THEN 1
                 ELSE 0
                 END AS cat_sub_cat
FROM    category c
INNER JOIN sub_category sc
ON       c.id = sc.category
LEFT JOIN catalogue_cat cc
ON      cc.cat = c.id
AND     cc.id = 2
LEFT JOIN catalogue_subcat csc
ON      csc.subcat = sc.id
AND     csc.id = 2
ORDER BY c.sort_order, sc.sort_order

My tables are as follows:-

package MyApp::Model::DBSchema::Category;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('category');
__PACKAGE__->add_columns(qw/id sort_order folder name description/);

package MyApp::Model::DBSchema::CatalogueCat;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('catalogue_cat');
__PACKAGE__->add_columns(qw/id cat/);

package MyApp::Model::DBSchema::CatalogueSubCat;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('catalogue_subcat');
__PACKAGE__->add_columns(qw/id subcat/);

Thanks in advance,
Alan

_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
Searchable Archive: http://www.mail-archive.com/[email protected]/

_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
Searchable Archive: http://www.mail-archive.com/[email protected]/

Reply via email to