Sorry, forgot END after each case, so it should look like

SELECT
      tag_name.id,
      SUM(CASE WHEN tag_link.app = 't' THEN 1 ELSE 0 END) AS cntTwt,
      SUM(CASE WHEN tag_link.app = 'd' THEN 1 ELSE 0 END) AS cntDel
FROM
      tag_name, tag_link
WHERE
      tag_link.tag_id = tag_name.id
GROUP BY
      tag_name.id


Pavel

On Sun, May 10, 2009 at 7:40 PM, Pavel Ivanov <paiva...@gmail.com> wrote:
> Try something like this:
>
> SELECT
>       tag_name.id,
>       SUM(CASE WHEN tag_link.app = 't' THEN 1 ELSE 0) AS cntTwt,
>       SUM(CASE WHEN tag_link.app = 'd' THEN 1 ELSE 0) AS cntDel
> FROM
>       tag_name, tag_link
> WHERE
>       tag_link.tag_id = tag_name.id
> GROUP BY
>       tag_name.id
>
>
> Pavel
>
> On Sun, May 10, 2009 at 6:09 PM, S Fiedler <ste.fied...@googlemail.com> wrote:
>>
>> 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
>>
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to