Hay algunas cosas que debes intentar hacer:
1) Toda relación entre tablas debe establecerse en el FORM y no en el WHERE, porque el WHERE no es optimizable y además cuando llega hasta él,
ya ha leido todos los registros, incluyendo los que no sirven.
2) Si una sola de las tablas tiene muchas condiciones de filtrado, es buena práctica crear una subconsulta que restrinja eso.
3) No uses coma o JOIN solamente cuando realices juntas. Eso produce productos cartesianos. Es una de las formas menos eficientes.
4) Usa alias para las tablas. Evitará problemas de escirtura.
Prueba así:
Código MySQL:
Ver original WV.ID,
traducciones.TEXTO NOMBRE,
T.TEXTO INFO,
WV.CAT,
WV.IMG,
WV.JUGADO,
WV.FECHA
ON WV.ID
= T.ID_ELEMENTO
;
Defectos básicos de lo que hacías:
- Usas una subconsulta en el SELECT para obtener un campo por condiciones que ya tienes en el WHERE. Es redundante y hace que por cada registro de la consulta mayor vuelva a hacer un barrido de toda la tabla TRADUCCIONEs... para obtener lo que ya tiene.
Cita: No, por que el campo texto de traducciones, segun el campo TIPO (si es 1 o 2) contiene el nombre o la descripcion del juego. He preparado la tabla asi por que esa tabla me sirve de forma general para la traduccion de cualkier cosa.
Eso está mal. No puedes usar un mismo campo para dominios incompatibles. Además, en tu contexto por tu descripcion podemos inferir que el resto de los campos se repite, lo que podría generar inconsistencia de datos, sin contar con la redundancia innecesaria.
Una
descripción y un
nombre son atributos diferentes de una cosa. No puedes usar un mismo campo para ambas,
ni siquiera como lo estás haciendo. Claro, salvo que realmente no te interese aprender sobre diseño de bases de datos...