Hi Kees,

thanks for your help. Thats a neater way than I structured my JOIN version
before. But my goal is to have all tag COUNTs for each application in one
result row + id and name of the tag. Like:

tag-id | tag-name | count_app_t | count_app_d
-----------------------------------------------------
1       | sql         | 9                | 2
2       | xml        | 61              | 0
3       | foo         | 47              | 826

Until now no 'JOIN construction' allowed more than one COUNT. Thats why I
tried out the SELECT (SELECT …), (SELECT) way – which didn't though errors,
but produced the freeze of the script.

Regards,
-steffen


Kees Nuyt wrote:
> 
> On Sun, 10 May 2009 13:51:29 -0700 (PDT), ckeen
> <ste.fied...@googlemail.com> wrote:
> 
>>
>>Hi, I'm trying to count two different column combinations using two
tables.
>>Table one (tag_name) contains the 'id' and the 'name' for a tag. Table two
>>is stuffed with entries that links those tags with different applications
>>and their contents.
>>Now I would like to select how often each tag is used in each application.
>>Some of my previous tries worked fine (using JOIN ON) – but only one COUNT
>>was possible. Now I'm trying to get a statement to work which returns me
the
>>tag amounts for both apps.
>>
>>tag_name
>>id | tag
>>--------
>>1 | sql
>>2 | xml
>>3 | foo
>>
>>tag_link
>>id | app | app_id | tag_id
>>----------------------------
>>1  | d    | 331     | 2
>>2  | t     | 49      | 1
>>
>>Here is my current statement:
>>SELECT 
>>      tag_name.id,
>>      (SELECT COUNT(*) FROM tag_link WHERE tag_link.tag_id = tag_name.id AND
>>tag_link.app = 't') AS cntTwt,
>>      (SELECT COUNT(*) FROM tag_link WHERE tag_link.tag_id = tag_name.id AND
>>tag_link.app = 'd') AS cntDel
>>FROM 
>>      tag_name 
>>GROUP BY 
>>      tag_name.id
> 
> 
> sqlite_version():3.6.13
> CREATE TABLE tag_name (
>       id INTEGER PRIMARY KEY,
>       tag TEXT
> );
> CREATE TABLE app_name (
>       id INTEGER PRIMARY KEY,
>       app TEXT
> );
> CREATE TABLE tag_link (
>       app_id INTEGER,
>       tag_id INTEGER,
>       PRIMARY KEY (app_id,tag_id)
> );
> INSERT INTO tag_name values (1,'sql');
> INSERT INTO tag_name values (2,'xml');
> INSERT INTO tag_name values (3,'foo');
> 
> INSERT INTO app_name values (30,'a');
> INSERT INTO app_name values (39,'b');
> INSERT INTO app_name values (49,'t');
> INSERT INTO app_name values (331,'d');
> 
> INSERT INTO tag_link values (331,1);
> INSERT INTO tag_link values (331,2);
> INSERT INTO tag_link values (49,1);
> INSERT INTO tag_link values (30,1);
> INSERT INTO tag_link values (39,2);
> INSERT INTO tag_link values (331,3);
> INSERT INTO tag_link values (49,3);
> 
> SELECT app_name.id,app,COUNT(tag_link.tag_id) AS nrtags
> FROM tag_link
> INNER JOIN app_name ON (app_name.id = tag_link.app_id)
> GROUP BY tag_link.app_id;
> 
> app_name.id|app_name.app|nrtags
> 30|a|1
> 39|b|1
> 49|t|2
> 331|d|3
> 
> 
>>The parser returns no error, only seems to freeze. Tipps, hints – all kind
>>of advice.
>>sincerely, ckeen
> 
> Hope this helps.
> -- 
>   (  Kees Nuyt
>   )
> c[_]
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Multiple-counts-between-two-tables-tp23473911p23474562.html
Sent from the SQLite mailing list archive at Nabble.com.

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to