Sebastian wrote:
Michael Stassen wrote:
<snip>
Now, I never said this couldn't be done in SQL. Assuming $cat is
already set, the statement in $sql below should do what you asked for:
$sql = "SELECT id, 'news' AS type, .... FROM news
WHERE ($cat = '' OR $cat = 'news')
UNION
SELECT id, 'faq' AS type, .... FROM faq
WHERE ($cat = '' OR $cat = 'faq')
UNION
SELECT id, 'forum' AS type, .... FROM forum
WHERE ($cat = '' OR $cat = 'forum')"
<snip>
Michael
you just gave me an idea.. maybe this is better:
SET @cat = '$cat';
SELECT id, 'news' AS type,
WHERE [expression...] AND (@cat = 'news' OR @cat = '')
UNION
SELECT id, 'faq' AS type,
WHERE [expression...] AND (@cat = 'faq' OR @cat = '')
UNION
[SELECT ........]
works regardless if $cat is set or not.
That was the point. The query I gave, quoted above, works whether $cat
is set or not (though I forgot to quote $cat in the comparisons --
sorry). No need to modify it to use a mysql user variable, either.
Taking into account the news that your real query is more complicated,
this would look something like:
$sql = "SELECT id, 'news' AS type, ..other_columns.. FROM news
..JOINs to other tables..
WHERE (various complicated conditions)
AND ('$cat' = '' OR '$cat' = 'news')
UNION
SELECT id, 'faq' AS type, ..other_columns.. FROM faq
..JOINs to other tables..
WHERE (various complicated conditions)
AND ('$cat' = '' OR '$cat' = 'faq')
UNION
SELECT id, 'forum' AS type, ..other_columns.. FROM forum
..JOINs to other tables..
WHERE (various complicated conditions)
AND ('$cat' = '' OR '$cat' = 'forum')";
Michael
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]