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 originalSELECT nombre
FROM clientes
WHERE cve_clientes
IN (
SELECT ventas.cve_clientes
FROM ventas, productos
WHERE productos.cve_producto = ventas.cve_producto AND MONTH(fecha) = 7 AND
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 originalSELECT nombre
FROM clientes
WHERE cve_clientes
IN (
SELECT ventas.cve_clientes
FROM ventas INNER JOIN productos
USING (cve_producto) WHERE MONTH(fecha) = 7 AND
productos.nombre LIKE '%sabritas%')
La otra la haría sin subconsulta, y en este caso evitando usar INNER JOIN:
Código sql:
Ver originalSELECT 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 originalSELECT clientes.nombre, COUNT(*) total_ventas FROM ventas INNER JOIN clientes USING (cve_clientes) GROUP BY ventas.cve_clientes