Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/09/2013, 12:24
xenon254
 
Fecha de Ingreso: noviembre-2007
Ubicación: Zamora (Spain)
Mensajes: 251
Antigüedad: 16 años, 5 meses
Puntos: 1
Pregunta Mostrar campos de una tabla u otra según condición

Hola a todos.

Estoy diseñando un sistema multidioma en la que se utiliza dos tablas. Para este ejemplo:

tabla_Animales y tabla_Animales_lang

La primera tabla guarda:
id_animal, nombre, raza, nacimiento, peso, pelaje

La segunda tabla guarda:
id_animal, id_org_animal, nombre, raza, pelaje, idioma

Es decir, en la segunda sólo se guardan datos que se puedan traducir a otros idiomas. Porque en la primera estarían los textos nativos en español.
id_org_animal es el campo que vincula a esta tabla con la primera.

Ahora viene la duda de cuando el sistema solicita los datos en un concreto a través de una variable de php que incrusta en la consulta MySql.

Para este ejemplo pongamos que la variable puede tomar dos valores:
1 = español
2 = inglés

Pensé en obtener los resultados comparando el idioma de la variable del lenguaje:
Código MySQL:
Ver original
  1. SELECT id_animal AS id,
  2. IF(#var_php#>1, (SELECT (nombre, raza, pelaje) FROM tabla_Animales_lang
  3. WHERE id_org_animal = id AND #var_php#= 3), (nombre, raza, pelaje))
  4. FROM tabla_Animales

Con un campo que se muestre dentro de IF funciona correctamente, pero con varios no es posible.

Se que puedo pasar el contenido en español a la tabla de idiomas y luego mostrar una consulta con INNER JOIN, resultado una combinación de ambas. Pero el problema es que se está adaptado una plataforma ya realizada a varios idiomas...

¿A alguien se le ocurre la manera de mostrar los campos en español de la primera en el caso de que se solicite así, y que muestre para los otros idiomas en determinadas situación?

Gracias y un saludo.