| 
	
 | 
 Posted by Juliette on 06/13/06 11:56 
laredotornado@zipmail.com wrote: 
> Hello, 
>  
> How would I write a query, given these two tables and data 
>  
> CATEGORIES 
> -------------------- 
> CATEGORY_ID 
> 1 
> 2 
>  
> PRODUCTS 
> ----------------- 
> PRODUCT_ID    CATEGORY_ID    SALE_PRICE  CLEARANCE_PRICE 
> A                      1                         NULL              7.50 
> B                      1                        13.50 
> NULL 
> C                      2                        NULL               NULL 
> D                      2                        NULL               5.00 
>  
> I would like to write a single MySQL query to indicate that a category 
> has at least one product with a non-null sale price  but also return a 
> result for the categories that don't.  Thes same logic would apply for 
> clearance prices.  Ideally, with the above data, my result set would 
> look like 
>  
> CATEGORY_ID    HAS_SALE    HAS_CLEARANCE 
> 1                         Yes               Yes 
> 2                         No                 Yes 
>  
> since categoyr 1 has product B on sale and product A on clearance, but 
> category 2 has no products on sale and product D on clearance.  Any 
> ideas how I can do this?  Using MySQL 4, PHP 4.  Thanks, - Dave 
>  
 
 
I think the below will solve this: 
 
SELECT distinct c.category_id as category_id, if(MAX(p1.sale_price),  
"yes","no") as has_sale, if(MAX(p2.clearance_price), "yes", "no") as  
has_clearance 
FROM `categories` as c 
LEFT JOIN `products` as p1 
  on c.category_id = p1.category_id and p1.sale_price IS NOT NULL 
LEFT JOIN `products` as p2 
  on c.category_id = p2.category_id and p2.clearance_price IS NOT NULL 
GROUP BY c.category_id 
 
By the by.. just saying MySql4 is useless as 4.1 added quite some  
features (such as the ability to use subqueries). Being a bit more  
specific helps if you want answers which take the version you are using  
into account.
 
  
Navigation:
[Reply to this message] 
 |