Ver Mensaje Individual
  #5 (permalink)  
Antiguo 30/08/2010, 05:00
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta SELECT 2 tablas.

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
  1.    WV.ID,
  2.    traducciones.TEXTO NOMBRE,
  3.    T.TEXTO INFO,
  4.    WV.CAT,
  5.    WV.IMG,
  6.    WV.JUGADO,
  7.    WV.FECHA
  8. FROM widget_videojuegos WV INNER JOIN
  9.    (SELECT * FROM traducciones WHERE ID_SECCION = 4 AND TIPO = 2 AND IDIOMA = 1) T
  10.           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...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)