Forum Moderators: coopster & phranque

Message Too Old, No Replies

SQL wildcards

         

shaan1980

3:13 pm on Jun 14, 2004 (gmt 0)

10+ Year Member



I want to execute the query below in perl. Its a logic for a search engine.
All the outer joins work fine. But my problem is with the last two and conditions. These conditions need to work only if they are selected from the form.
How do I generate a dynamic query here based on whats selected
. Please use perl syntax to explain.
Thanks

SELECT distinct doc_metadata.report_number, description, report_title, id, publication_date
FROM doc_metadata, doc_authors, doc_study_areas, doc_land_types,doc_animals_studied, doc_plants_studied, doc_study_parameters, doc_analysis_media
WHERE doc_metadata.report_number=doc_authors.report_number
ANDdoc_metadata.report_number=doc_land_types.report_number(+)
ANDdoc_metadata.report_number=doc_animals_studied.report_number(+)
ANDdoc_metadata.report_number=doc_plants_studied.report_number(+)
ANDdoc_metadata.report_number=doc_study_parameters.report_number(+)
ANDdoc_metadata.report_number=doc_analysis_media.report_number(+)
AND (UPPER(description) LIKE UPPER('%Berry%') OR UPPER(report_title) LIKE UPPER('%Berry%'))
AND (publication_date BETWEEN '01-JAN-50' AND '01-OCT-02');

timster

12:45 pm on Jun 15, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



$title = $formVars{'title'};
$title and $sql .= "AND (UPPER(description) LIKE UPPER('%$title%') OR UPPER(report_title) LIKE UPPER('%$title%')) ";

$beginDate = $formVars{'beginDate'};
$endDate = $formVars{'endDate'};

if ($beginDate or $endDate) {

if (! $endDate) {
$sql .= " AND (publication_date >= '$beginDate'); "
} elsif (! $beginDate) {
$sql .= " AND (publication_date <= '$endDate'); "
} else {
$sql .= " AND (publication_date BETWEEN '$beginDate' AND '$endDate'); "
}
}

shaan1980

1:52 pm on Jun 15, 2004 (gmt 0)

10+ Year Member



Thanks
That was really helpful