junit condicional no mysql

Eu tenho uma tabela id2 , id2 , type . type é um valor enumerado contendo um nome de outra tabela. Eu gostaria de pré-forma uma join com o nome da tabela do type . Por exemplo:

 switch($type) case 'table1': join table1; break; case 'table2': join table2; break; 

Como posso conseguir isso?

Você não pode fazer isso diretamente … você pode fazer algo assim (não muito bonito …):

 SELECT t.id, t.type, t2.id AS id2, t3.id AS id3 FROM t LEFT JOIN t2 ON t2.id = t.id AND t.type = 't2' LEFT JOIN t3 ON t3.id = t.id AND t.type = 't3' 

feia maneira:

Tipos de tabelas, T1, T2:

 SELECT ... FROM Types, T1 , where Types.ID=T1.Types_ID AND Types.TYPE='TABLE1' UNION SELECT ... FROM Types, T2 , where Types.ID=T2.Types_ID AND Types.TYPE='TABLE2' 

Além da resposta anterior: Você pode combinar os dois resultados de junções esquerdas usando a instrução IF: IF (t.type = ‘t2’, t2.id, t3.id) como type_id

Você pode ver outro exemplo de junções condicionais do mysql no mysqldiary.com