Ver Mensaje Individual
  #12 (permalink)  
Antiguo 14/06/2009, 00:21
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consultas MySQL

CarloosN,
Creo que gnzsoloyo tiene razón y que esa es la consulta, y tú estás confundiendo la prohibición de usar inner join en lugar de la subconsulta con usarlo siempre: lo que no quiere tu profesor es que lo uses en lugar de esta subconsulta. Por lo que si usas la subconsulta, no creo que te esté prohibiendo unir mediante inner join el primer cruce. Eso creo. De todas formas, deberías preguntárselo.
No obstante, y si te empeñas en evitar escribirlo, puedes hacer la union del primer cruce con where e igual, así:
Código sql:
Ver original
  1. SELECT nombre
  2. FROM clientes
  3. WHERE cve_clientes
  4. IN (
  5. SELECT ventas.cve_clientes
  6. FROM ventas, productos
  7. WHERE productos.cve_producto = ventas.cve_producto AND MONTH(fecha) = 7 AND
  8. productos.nombre LIKE '%sabritas%')
Yo pondría las dos consultas y diría que es más eficiente y estándar el inner join en el primer cruce, empleando USING. Sería ésta:
Código sql:
Ver original
  1. SELECT nombre
  2. FROM clientes
  3. WHERE cve_clientes
  4. IN (
  5. SELECT ventas.cve_clientes
  6. FROM ventas INNER JOIN productos
  7. USING (cve_producto) WHERE MONTH(fecha) = 7 AND
  8. productos.nombre LIKE '%sabritas%')

La otra la haría sin subconsulta, y en este caso evitando usar INNER JOIN:
Código sql:
Ver original
  1. SELECT clientes.nombre, COUNT(*) total_ventas FROM ventas, clientes WHERE ventas.cve_clientes = clientes.cve_clientes GROUP BY ventas.cve_clientes

Pero mejor con inner join y using
Código sql:
Ver original
  1. SELECT clientes.nombre, COUNT(*) total_ventas FROM ventas INNER JOIN clientes USING (cve_clientes) GROUP BY ventas.cve_clientes

Última edición por jurena; 14/06/2009 a las 01:08