A variety of if’s and Greatest in conjunction to mySQL math works!

SELECT (
(
GREATEST( IF( (

SELECT 10 AS discount
FROM `paypal_payment_info_sample`
WHERE `datecreation` >= DATE_SUB( NOW( ) , INTERVAL 4
MONTH )
AND `buyer_email` = '$client_email'
AND `paymentstatus` = 'Completed'
LIMIT 1 ) , 10, 0 ) , IF( (

SELECT 5 AS discount
FROM `paypal_payment_info_sample`
WHERE `datecreation`
BETWEEN DATE_SUB( NOW( ) , INTERVAL 1 YEAR )
AND DATE_SUB( NOW( ) , INTERVAL 4
MONTH )
AND `buyer_email` = '$client_email'
AND `paymentstatus` = 'Completed'
LIMIT 1 ) , 5, 0
)
)
) + ( IF( (

SELECT 10 AS discount
FROM `subscriber_details`
WHERE `email` = '$client_email'
LIMIT 1
), 10, 0 ) )
) AS discount_percentage

The Verse of the Day
“Encouragement from God’s Word”
http://www.TheVerseOfTheDay.info  


From: Amit Tandon 
Sent: Monday, August 22, 2011 5:45 AM
To: Ron Piggott 
Cc: php-db@lists.php.net 
Subject: Re: [PHP-DB] SELECT online store discount %

Ron

Have u thought of CASE (in SELECT). Remebber their is some syntactical 
difference in "CASE" for SELECT and "CASE" in procedures
============
regds
amit

"The difference between fiction and reality? Fiction has to make sense."



On Sun, Aug 21, 2011 at 12:55 AM, Ron Piggott <ron.pigg...@actsministries.org> 
wrote:


  I am trying to write a database query that determine the customer loyalty 
discount for an online store.  I am wondering if there is a way of doing this 
as 1 query, instead of multiple and using PHP to do the math?

  - I want to offer a 10% discount if the person is a subscriber

  SELECT 10 AS discount FROM `subscriber_details` WHERE `email` = 
'$client_email' LIMIT 1

  - I also want to offer a customer loyalty discount:

  10% if this is a purchase within 4 months of the previous purchase,

  SELECT 10 AS discount FROM `paypal_payment_info_sample` WHERE `datecreation` 
>= DATE_SUB( NOW( ) , INTERVAL 4 MONTH ) AND `paymentstatus` = 'Completed' 
LIMIT 1

  - OR 5% if the most recent previous purchase is between 4 months and 1 year 
ago.

  SELECT 5 AS discount FROM `paypal_payment_info_sample` WHERE `datecreation` 
BETWEEN DATE_SUB( NOW( ) , INTERVAL 1 YEAR ) AND DATE_SUB( NOW( ) , INTERVAL 4 
MONTH ) AND `paymentstatus` = 'Completed' LIMIT 1

  The discounts possibilities would be:
  - 20% (a subscriber with a purchase within the past 4 months)
  - 15% (a subscriber with a purchase between 4 months and a year ago)
  - 10% (for being a subscriber)
  - 10% (for a purchase made within the past 4 months)
  - 5% (for a purchase made between 4 months and a year ago)

  Is there a way to do this all within the context of 1 query?

  Ron

  The Verse of the Day
  “Encouragement from God’s Word”
  http://www.TheVerseOfTheDay.info

Reply via email to