Hi Sebastian;
There is always crazy things somewhere.
I'll give you two methods for that :
mysql> select id,'news' as selected, type from news
-> union select id,'faq' as selected, type from faq
-> union select id,'forum' as selected, type from forum;
+------+----------+-------+
| id | selected | type |
+------+----------+-------+
| 1 | news | news |
| 2 | faq | faq |
| 3 | forum | forum |
+------+----------+-------+
3 rows in set (0.00 sec)
FIRST CRAZY METHOD :
*************************
mysql> set @cat='news';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from (
-> select id,'news' as selected, type from news
-> union select id,'faq' as selected, type from faq
-> union select id,'forum' as selected, type from forum
-> ) Temp
-> where [EMAIL PROTECTED];
+------+----------+------+
| id | selected | type |
+------+----------+------+
| 1 | news | news |
+------+----------+------+
1 row in set (0.00 sec)
SECOND CRAZY METHOD (I prefer):
*************************
set @cat := 'news';
set @sql:=concat('select id,','''',@cat,'''',' as selected from ',@cat);
select @sql;
prepare stmt from @sql ;
execute stmt;
+------+----------+
| id | selected |
+------+----------+
| 1 | news |
+------+----------+
1 row in set (0.00 sec)
deallocate prepare stmt;
********* another click with ?cat=faq
set @cat := 'faq';
set @sql:=concat('select id,','''',@cat,'''',' as selected from ',@cat);
select @sql;
prepare stmt from @sql ;
execute stmt;
mysql> execute stmt;
+------+----------+
| id | selected |
+------+----------+
| 2 | faq |
+------+----------+
1 row in set (0.00 sec)
deallocate prepare stmt;
OTHER CRAZY METHODS - coming emails :o)
--------------------
A+
Mathias
Selon Sebastian <[EMAIL PROTECTED]>:
> Michael Stassen wrote:
>
> > Sebastian wrote:
> >
> >> i have a query with 3 union selects:
> >>
> >> SELECT id, 'news' AS type, .... FROM news
> >>
> >> UNION
> >> SELECT id, 'faq' AS type, .... FROM faq
> >>
> >> UNION
> >>
> >> SELECT id, 'forum' AS type, .... FROM forum
> >>
> >> which works just fine and selects everything from all 3 tables.. but
> >> say i want to make a condition to only select from either 'faq' ,
> >> 'news' or 'forum' how can i do this?
> >>
> >> example, if a user visits a link suck as: page.php?cat=faq it will
> >> only select from 'faq' .. is this possible to do right in the query?
> >> when there is no ?cat= then all three selects run.
> >>
> >> makes sense? i am stuck on this for a few days already.
> >> thanks.
> >>
> >
> > Why don't you do this in your app? If cat is set, issue the
> > appropriate single-table query, otherwise issue the union. Surely
> > that would be simpler than trying to build one multi-purpose query.
> >
> > Michael
>
> I was hoping i could do some crazy thing like WHERE type = 'faq' so i
> can do it all from one block of code.
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
>
>
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]