> You just need to invert a couple of things...
> 
> SELECT p.id, p.prod_name, sum(oi.quantity) as qty
> FROM Products p 
> LEFT JOIN orders as o
>         ON (p.id = oi.product_id)
>         AND o.created BETWEEN "2005-01-01 00:00:00" AND "2006-02-22 23:59:59"
>         AND o.status not IN ('cancelled', 'pending', 'ghost')
> LEFT JOIN order_items as oi
>         ON (o.id = oi.order_id)
> GROUP BY p.id
> ORDER by qty ASC 
> 
> 
> That should give you a list of all products and a count of how many have been
> ordered between 2005-01-01 and 2006-02-22 23:59:59 where the status of the
> order is neither 'cancelled', 'pending', or 'ghost'.
> 
> The think to remember is that an ON clause can be as complex as a WHERE
> clause. The ON clause also determines which rows of which table participate in
> a JOIN. In this case the only table to be affected will be the one on the
> right side of a LEFT join (in an INNER join both tables are filtered). So you
> keep all of your products visible (as declared in the FROM clause) and
> optionally associate with each product an order and optionally past that to an
> order_item. 
> HTH! 

I think we are close, thanks
ERROR 1120: Cross dependency found in OUTER JOIN.  Examine your ON
conditions

Not sure if this is related to my version of mysql, or something else?
-- 
-------------------------------------------------------------
Scott Haneda                                Tel: 415.898.2602
<http://www.newgeo.com>                     Novato, CA U.S.A.



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to