sql - mysql JOIN ON IF()? -


i trying use sql such this:

select t.*, t2.* templates t left join if(t.t_type = 0,'templates_email', if(t.t_type = 1,'templates_sms','templates_fax')) t2 on t.t_id = t2.t_id; 

is possible that?

basically want join on 1 of 3 tables based on value row.

is recommended if possible?


update
so,

basically templates table table contains information every template must have, eg name, id, description

then have templates_x tables these tables contain fields unique each template type.
(there quite few , having single table null fields not applicable not practical).

the tables called templates_x appropriate x stored in templates table int flag.

the join between templates_x tables , templates table through t_id.

so suggest?

is possible that?

no, can't use dynamically assigned tables (join or otherwise) without using dynamic sql syntax (see mysql's preparedstatement syntax).

this non-dynamic re-write of pseudo-query assumes 3 template tables join have same number of columns, , same data types:

select t.*,         te.*   templates t   join templates_email te on te.t_id = t.t_id  t.t_type = 0 union select t.*,         ts.*   templates t   join templates_sms ts on ts.t_id = t.t_id  t.t_type = 1 union select t.*,         tf.*   templates t   join templates_fax tf on tf.t_id = t.t_id  t.t_type not in (0, 1) 

Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -