[jifty-devel] Howto: Select Distinct in Jifty::DBI

Jes jjjesss at gmail.com
Thu Jun 3 12:15:14 EDT 2010


Hi Ruslan:

I tested your new patch and it doesn't work with my app. Now it seems
it enters in a non-end-loop.

I couldn't test the .t test because of:

 * I'm not sure about run jifty tests
 * "BEGIN { require "t/utils.pl" }" this file is missing in my t directory

More help would be apreciated :D. Thanks for your patience.

BR

Jes


El Tue, 1 Jun 2010 23:31:09 +0400
Ruslan Zakirov <ruz at bestpractical.com> escribió:

> Hello, Jes.
> 
> I've written some tests and a new patch. That would be cool if you
> extend tests.
> 
> On Tue, Jun 1, 2010 at 9:59 PM, Jes <jjjesss at gmail.com> wrote:
> > Hi Ruslan:
> >
> > It seems there is some bug in the patch or in my code.
> >
> > I have MYSQL table called "celda" and "Celda" model with this
> > columns (in fact there are more columns but for this example...):
> >
> > "ine" "poblacion"
> >
> > So, for example I could have this records:
> >
> > ine     poblacion other_column
> > 14000   a1              1
> > 14000   a1              2
> > 14001   b1              3
> > 14001   b1              4
> > 14002   c1              5
> > 14002   c1              6
> >
> > And I coded something like in View.pm:
> >
> > 8<-------------------------------------------------------
> >    my $celdas = new ImpactoWeb::Model::CeldaCollection;
> >
> >    my @listofine = $celdas->distinct_column_values(
> >                                                        column   =>
> > 'ine' );
> >
> >
> >    if ( @listofine ) {
> >        table {
> >            attr { class => "datatable" } row {
> >                th { "INE" };
> >                th { "Municipio" };
> >            };
> >
> >                        foreach my $ine (@listofine)
> >                        {
> >                                #find cells with that INE
> >                                $celdas->limit(
> >                        column   => 'ine',
> >                        value    => $ine
> >                        );
> >
> >                my $celda = $celdas->next;
> >
> >                                row {
> >                                                cell { $ine };
> >                                                cell
> > { $celda->poblacion }; };
> >
> >                        }
> >        };    #table
> >    }
> >
> > 8<-------------------------------------------------------
> >
> > This should show (that's my intention) something like:
> >
> >
> > ine     poblacion
> > 14000   a1
> > 14001   b1
> > 14002   c1
> >
> > but I got this error:
> >
> > WARN - DBD::mysql::db selectcol_arrayref failed: Unknown table
> > 'main' in field list
> > at /usr/local/share/perl/5.10.1/Jifty/DBI/Collection.pm line 959,
> > <DATA> line 16.
> >
> > It seems something regarding this piece of code in your patch:
> >
> >    my $column = 'main.'. $args{'column'};      <<<<<<<<<<<<<<<<<<
> > 'main.' $query_string = 'SELECT DISTINCT '. $column . $query_string;
> >
> > Any idea?
> >
> > Thanks in advance,
> >
> > Jes
> >
> > El Tue, 1 Jun 2010 17:47:53 +0400
> > Ruslan Zakirov <ruz at bestpractical.com> escribió:
> >
> >> Hello, Jes.
> >>
> >> I believe it's usable operation and deserves a method in
> >> collection. In the attachment you can find patch for Jifty::DBI
> >> that demonstrates how method will probably look. I didn't test the
> >> patch even if it compiles or not.
> >>
> >> If it works for you and other people have no objections then I can
> >> push it into trunk.
> >>
> >> On Sat, May 29, 2010 at 3:09 PM, Jes <jjjesss at gmail.com> wrote:
> >> > El Fri, 28 May 2010 12:28:36 -0400
> >> > Jesse Vincent <jesse at bestpractical.com> escribió:
> >> >
> >> >>
> >> >> Jes,
> >> >>
> >> >> What are you actually trying to do?
> >> >>
> >> >> Best,
> >> >> Jesse
> >> >>
> >> >> On Fri 28.May'10 at 11:19:51 +0200, Jes wrote:
> >> >> > Hi all:
> >> >> >
> >> >> > How can I do a query like:
> >> >> >
> >> >> > SELECT DISTINCT myfield FROM mytable
> >> >> >
> >> >> > ???
> >> >> >
> >> >> > I'm used to deal with records and collections but I can't
> >> >> > figure out how this can be coded (first time I have to deal
> >> >> > with).
> >> >> >
> >> >> > Thanks in advance,
> >> >> >
> >> >> > Jes
> >> >> > _______________________________________________
> >> >> > jifty-devel mailing list
> >> >> > jifty-devel at lists.jifty.org
> >> >> > http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-devel
> >> >> _______________________________________________
> >> >> jifty-devel mailing list
> >> >> jifty-devel at lists.jifty.org
> >> >> http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-devel
> >> >
> >> >
> >> > Hi:
> >> >
> >> > Well, I have several models. One of them has a lot of columns.
> >> > There are a lot of records with one column in common. This
> >> > column is called "ine", and the model is called "Celda". So, for
> >> > example, to find all records for a particular value of "ine" I'd
> >> > do:
> >> >
> >> >    my $cells = ImpactoWeb::Model::CeldaCollection->new;
> >> >    $cells->limit(
> >> >                column   => 'ine',
> >> >                value    => $ine
> >> >                );
> >> >    while ( my $cell = $cells->next )
> >> >        {
> >> >        .... rest of the code...
> >> >        }
> >> >
> >> > As well I need to find all different values of column "ine". In
> >> > SQL I'd do:
> >> >
> >> > SELECT DISTINCT ine FROM Celda;
> >> >
> >> > or something similar. I'm only want to get an array, for example,
> >> > with all different values of "ine".
> >> >
> >> > Thanks, bye
> >> >
> >> > Jes
> >>
> >>
> > _______________________________________________
> > jifty-devel mailing list
> > jifty-devel at lists.jifty.org
> > http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-devel
> >
> 
> 
> 


More information about the jifty-devel mailing list