Hi people!

------------------------------------------------------------------------

@Ryan,

> Fine, but do think of if you ever might want to use the DB via
> anything else, or a DB admin program... best is to ensure the DB
> schema itself knows the collation and case sensitivity requirements.

I have to take care of the case sensitivity through the interface of my
program, but I will also consider your comment.

> It is in fact hard to fathom a simple query where EXISTS is the only 
> possible solution (i.e. the answer cannot be achieved with a simple 
> JOIN  or WHERE clause addition) which is why Keith said "your best
> bet is to..." and then demonstrated a way without using EXISTS.

in my present problem, I can use `unique`. I'm not at home know, but I
definitely have to play a little with your solutions.

------------------------------------------------------------------------

@Simon,

> you can submit this query and know that there is definitely an answer
> which is definitely a floating point value.  And then in your
> programming language you can do your equivalent of
>
> IF (theanswer) > 0.0 THEN (doSomething) END

actualy I do that in C++,

if ( getTagCount( name ) == 0 ) // `0` means not present in the table
{
    transaction.Add("INSERT INTO TAGS (NAME, COUNT) VALUES ('"+name+"',
0 );"); 
}

with `getTagCount()`, a function wich ask the db:

SELECT COUNT FROM TAG WHERE NAME = 'biology';

so if I got nothing from the query, `getTagCount()` returns 0 by itself
otherwise I convert the result given by the query to an integer.

but now, I try to merge all queries in one query since I heard about
`transactions`.

------------------------------------------------------------------------

@Igor,

> > sqlite> select count(a) from x;
> 
> Better still:
> 
> select exists (select 1 from x);
> 
> The difference is that the version with count() always scans the
> whole table, while the latter stops at the first record - which is
> good enough if you only need to check for existence, and don't
> actually need the count.

that's a good stuff.

I will think a little, to store the result of some query like,

select exists (select 1 from Tags WHERE name='magnetohydrodynamics');

then using a case over that result...

CASE result WHEN 0 THEN addMe ELSE doNotAddMe END

 I have to try, I never used case in Sqlite so far...

------------------------------------------------------------------------

thank you guys!

regards,
Nicolas

Reply via email to