I have about 4 or 5 different queries that are all exactly like with the exception of what is contained in the WHERE clause. For example, these are reports that operate by date so one report uses a date of Now() and the other reports use dates by month and 15 days. All of the fields are exactly the same. Is there a way to combine these into a single query and just change the data in the WHERE clause on the fly? Or some other solution??
Thanks
OK Guys, thanks for the replies. Here are the actual queries. Please notice that the where clause is the only thing that differs and I really hate having to write another query that is almost exactly alike whenever I need to add a new report.
SELECT t1.customer_id, t1.name, t2.dtime, t6.band_type, t7.dop, t5.lun, t2.rpt
FROM
customer AS t1
Inner Join report AS t2 ON t1.customer_id = t2.customer_id
Inner Join employee AS t5 ON t5.employee_id = t2.employee_id
Inner Join band_type AS t6 ON t6.band_type_id = t2.band_type_id
Inner Join dop AS t7 ON t7.dop_id = t2.dop_id
WHERE
t2.rpt_type = 'daily' AND
t2.tmstamp >= date_sub(curdate(), interval 1 month) AND
t2.tmstamp <= curdate() AND
t1.customer_id = ''
WHERE
t2.tmstamp >= '$date 00:00:00' AND
t2.tmstamp <= '$date 23:59:59' AND
t1.customer_id = '' AND
t2.deleted = '0'
WHERE
t2.stamp >= date_sub(now(), interval 1 day) AND
t1.customer_id = '' AND
t2.band_type = '' AND
t2.deleted = '0'
see here
You have 2 options, build dynamic SQL or use the coalesce option.
I prefer the later (scroll half way down link to “the Coalesce function”
Be warned though that both options have their strong/weak points