Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/05/2010, 16:22
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: ayuda en consulta

Vamos a hacer una aclaración sobre lo que dice helacer:
1) El problema de sintaxis se produce porque no respetas el orden de las cláusulas. Toda cláusula modificatoria, de ordenamiento, filtrado o límite van siempre después del WHERE. Siempre.
2) La condición puede ponerse en el WHERE y no necesariamente en el FROM, aunque hacerlo en el FROM es efectivo si tienes un índice definido sobre el campo "nom_disco"; caso contrario el resultado puede ser el mismo que hacerlo en el WHERE.
3) Lo que necesariamente debe ir en el FROM es la vinculación entre tablas.
En tu caso la sentencia podría tomar dos formas:
Código MySQL:
Ver original
  1.     d.nom_disco "DISCOTECA",
  2.     count(ad.cod_alb) "NUMERO DE ALBUMES",
  3.     group_concat(a.nom_alb separator " - ") "NOMBRE ALBUMES"
  4.     discoteca d INNER JOIN
  5.     albumes_de_discoteca ad  USING (nit_disco) INNER JOIN
  6.     album a USING (cod_alb) ON d.nom_disco= "La Zona"
  7. GROUP BY ad.nit_disco
Código MySQL:
Ver original
  1.     d.nom_disco "DISCOTECA",
  2.     count(ad.cod_alb) "NUMERO DE ALBUMES",
  3.     group_concat(a.nom_alb separator " - ") "NOMBRE ALBUMES"
  4.     discoteca d INNER JOIN
  5.     albumes_de_discoteca ad  USING (nit_disco) INNER JOIN
  6.     album a USING (cod_alb)
  7. WHERE d.nom_disco= "La Zona"
  8. GROUP BY ad.nit_disco
En definitiva la diferencia entre ambos es una cuestión de índices y performance.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)