Hi,

I have a feeling that thread "Tcl bindings are a little problematic." is 
forgotten, but yet not concluded.

I want to catch your eye again on it. Please see response below.

Regards,
Pawel



From: Paweł Salawa <pawelsal...@...>
Subject: Re: Tcl bindings are a little problematic.
Newsgroups: gmane.comp.db.sqlite.general
Date: 2010-09-05 10:19:35 GMT (2 days, 19 hours and 47 minutes ago)

> The column names on queries that do not have AS clauses on the columns are
> undefined and are subject to change.  To get specific column names, use AS:
> 
>     select a1.txt AS a1, a2.txt AS a2 ....
> 
> Then your arr() will contain entries a(*), a(a1), and a(a2).

True, but in case of custom SQL typed by end-user (here by user of 
SQLiteStudio) both result columns can be named exactly same by the user.

For now it can be handled by double call (in case of SELECT), first using 
arr() and second with results returned in list, but a disadventage is obvious.

Dnia czwartek, 2 września 2010, napisałeś:
> On Wed, Sep 1, 2010 at 6:11 PM, Paweł Salawa <paul <at> bitrock.com> wrote:
> 
> > Hi,
> >
> > It's pretty hard to make a SELECT from same table, but using two different
> > aliases for the table and at the same time also getting column names in
> > results - using Tcl bindings.
> >
> > The SQL query would be:
> >
> > select a1.txt, a2.txt
> >  from a a1
> >  join a a2
> >       using (ref)
> >  where a1.lang = 'french'
> >       and
> >       a2.lang = 'english';
> >
> > We can either use:
> > db eval $query arr {
> >  parray arr
> > }
> >
> > But then we would have arr(*) = a.txt a.txt
> > but only one entry: arr(a.txt) = something
> > which can fail (see thread on forum I mentioned below).
> >
> 
> The column names on queries that do not have AS clauses on the columns are
> undefined and are subject to change.  To get specific column names, use AS:
> 
>     select a1.txt AS a1, a2.txt AS a2 ....
> 
> Then your arr() will contain entries a(*), a(a1), and a(a2).
> 
> 
> >
> > Other way is to use:
> > set results [db eval $query]
> > foreach cellValue $results {
> >  puts $cellValue
> > }
> >
> > But then we lose informations about column names in results.
> >
> > The problem was discussed here (escpecially first and last post in the
> > thread): http://forum.sqlitestudio.one.pl/viewtopic.php?f=4&t=3596
> >
> > One of possible solutions would be to add some prefix or suffix to array
> > indexes.
> >
> > Other one would be to provide column names in results of [db eval $query],
> > using for example flag, like: [db eval $query -withColumnNames] or
> > something
> > like that. The results would be: [list $columnList $tableDataList]
> >
> > I hope I explained it clearly enough. In case of any questions don't
> > hesistate
> > to ask.
> >
> > Regards,
> > --
> > Paweł Salawa
> > paul <at> bitrock.com
> > _______________________________________________
> > sqlite-users mailing list
> > sqlite-users <at> sqlite.org
> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> >
> 
> 
> 
> -- 
> D. Richard Hipp
> drh <at> sqlite.org
> 

-- 
Paweł Salawa
paul <at> bitrock.com
_______________________________________________
sqlite-users mailing list
sqlite-users <at> sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

-- 
Paweł Salawa
pawelsal...@gmail.com
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to