Gert Cuykens <gert.cuyk...@gmail.com>
wrote:
> On Wed, Sep 16, 2009 at 8:26 PM, Igor Tandetnik
> <itandet...@mvps.org> wrote:
>> Gert Cuykens <gert.cuyk...@gmail.com>
>> wrote:
>>> On Wed, Sep 16, 2009 at 1:35 AM, Igor Tandetnik
>>> <itandet...@mvps.org> wrote:
>>
>>>> Perhaps your query could be a bit clearer when written this way:
>>>>
>>>> select t.pid, t.txt, t.price, t.qty - IFNULL(sum(o.qty), 0)
>>>> onhand_qty from PRODUCTS t left join ORDERS o on t.pid = o.pid
>>>
>>> This does not show me the new products that are not ordered yet
>>
>> Are you sure? I don't see why it wouldn't.
>
> select t.pid, t.txt, t.price, t.qty - IFNULL(sum(o.qty), 0) onhand_qty
> from PRODUCTS t left join ORDERS o on t.pid = o.pid
>
> shows 1 product because I only have 1 order with that product

This query is different from the one I posted. Mine had "where t.pid = 
?;", yours doesn't. If you want a report for all products, add the 
following clause:

group by t.pid;

> SELECT t.pid,
>         t.txt,
>         t.price,
>         t.qty - IFNULL(qs.qty_sold, 0) "onhand_qty"
>    FROM PRODUCTS t
> LEFT JOIN (SELECT o.pid,
>                 SUM(o.qty) "qty_sold"
>            FROM ORDERS o) qs ON qs."o.pid" = t.pid
>
> shows all products

Compare this statement with the one you mentioned in your original post. 
Lacking mind-reading abilities, I was trying to help you with the 
statement you actually asked about, not the one you were thinking about.

Igor Tandetnik 



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

Reply via email to