Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Sub consulta

Estas en el tema de Sub consulta en el foro de Mysql en Foros del Web. Buenas, tengo el siguiente problema: Necesito saber empresas contratantes y sus promedios de comisiones pagadas, pero sólo de aquellas cuyo promedio supere al promedio de ...
  #1 (permalink)  
Antiguo 29/05/2014, 18:53
 
Fecha de Ingreso: mayo-2014
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Sub consulta

Buenas, tengo el siguiente problema:

Necesito saber empresas contratantes y sus promedios de comisiones pagadas, pero sólo de aquellas cuyo promedio supere al promedio de empresa "pepito"

Y tengo estas tablas
Empresa
razon social
cuit

Comisiones
nro_contrato
importe_comision

Contratos
nro_contrato


Código MySQL:
Ver original
  1. select emp.`razon_social`,AVG(comi.`importe_comision`)Promedios from comisiones comi
  2. inner join contratos cont on cont.`nro_contrato`= comi.`nro_contrato`
  3. inner join empresas emp on emp.`cuit` = cont.`cuit`

Hasta ahi la tabla que les adjunto me tira un listado de empreas y sus promedios
Ahora como hago para filtrar que sean las de un promedio mayor a empresa "pepito"??


Muchas Gracias! Espero su ayuda
  #2 (permalink)  
Antiguo 30/05/2014, 01:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Sub consulta

Código MySQL:
Ver original
  1. select emp.`razon_social`,
  2.           AVG(comi.`importe_comision`) Promedios
  3. from comisiones comi
  4.             inner join contratos cont
  5.                   on cont.`nro_contrato`= comi.`nro_contrato`
  6.             inner join empresas emp
  7.                   on emp.`cuit` = cont.`cuit`
  8. group by emp.`razon_social`
  9. HAVING Promedios>(select AVG(comi.`importe_comision`) Promedios
  10.                                  from comisiones comi
  11.                                               inner join contratos cont
  12.                                                      on cont.`nro_contrato`= comi.`nro_contrato`
  13.                                               inner join empresas emp
  14.                                                      on emp.`cuit` = cont.`cuit`
  15.                                  WHERE emp.`razon_social`='Pepito'
  16.                                  group by emp.`razon_social`);

No respondo de la eficiencia de eso, yo me inclinaria por hacer el filtrado con programación externa.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 30/05/2014, 11:45
 
Fecha de Ingreso: mayo-2014
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Sub consulta

Gracias x tu respuesta pero no funciona del todo :( lo que pasa es que en la subconsulta estaria tomando el promedio de TODAS las empresas. si o si hay q agruparlos por razon social...
  #4 (permalink)  
Antiguo 30/05/2014, 12:07
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Sub consulta

Código MySQL:
Ver original
  1.     emp.`razon_social`, Avg(comi.`importe_comision`) Promedios
  2.     comisiones comi
  3.         INNER JOIN
  4.     contratos cont ON cont.`nro_contrato` = comi.`nro_contrato`
  5.         INNER JOIN
  6.     empresas emp ON emp.`cuit` = cont.`cuit`
  7. GROUP BY emp.`razon_social`
  8. HAVING Avg(comi.`importe_comision`) > (SELECT
  9.         Avg(c.`importe_comision`) Promedios
  10.     FROM
  11.         comisiones c
  12.             INNER JOIN
  13.         contratos ct ON ct.`nro_contrato` = c.`nro_contrato`
  14.             INNER JOIN
  15.         empresas e ON e.`cuit` = ct.`cuit`
  16.     WHERE
  17.         e.`razon_social` = 'pepito');
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 30/05/2014, 12:12
 
Fecha de Ingreso: mayo-2014
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Sub consulta

Cita:
Iniciado por quimfv Ver Mensaje
Código MySQL:
Ver original
  1. select emp.`razon_social`,
  2.           AVG(comi.`importe_comision`) Promedios
  3. from comisiones comi
  4.             inner join contratos cont
  5.                   on cont.`nro_contrato`= comi.`nro_contrato`
  6.             inner join empresas emp
  7.                   on emp.`cuit` = cont.`cuit`
  8. group by emp.`razon_social`
  9. HAVING Promedios>(select AVG(comi.`importe_comision`) Promedios
  10.                                  from comisiones comi
  11.                                               inner join contratos cont
  12.                                                      on cont.`nro_contrato`= comi.`nro_contrato`
  13.                                               inner join empresas emp
  14.                                                      on emp.`cuit` = cont.`cuit`
  15.                                  WHERE emp.`razon_social`='Pepito'
  16.                                  group by emp.`razon_social`);

No respondo de la eficiencia de eso, yo me inclinaria por hacer el filtrado con programación externa.
Perdon, este esta correcto al menos planteado, peroooo me tira el siguiente error
: Commands out of sync; you can't run this command now
  #6 (permalink)  
Antiguo 30/05/2014, 12:18
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Sub consulta

Pregunta. ¿Estás intentando ejecutarla desde dónde? ¿PHP, phpMyadmin, consola o Workbench?

Según lo que dice el manual de referencia, es un error en el cliente, no en el servidor (http://dev.mysql.com/doc/refman/5.0/...t-of-sync.html)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 30/05/2014, 12:19
 
Fecha de Ingreso: mayo-2014
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Sub consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código MySQL:
Ver original
  1.     emp.`razon_social`, Avg(comi.`importe_comision`) Promedios
  2.     comisiones comi
  3.         INNER JOIN
  4.     contratos cont ON cont.`nro_contrato` = comi.`nro_contrato`
  5.         INNER JOIN
  6.     empresas emp ON emp.`cuit` = cont.`cuit`
  7. GROUP BY emp.`razon_social`
  8. HAVING Avg(comi.`importe_comision`) > (SELECT
  9.         Avg(c.`importe_comision`) Promedios
  10.     FROM
  11.         comisiones c
  12.             INNER JOIN
  13.         contratos ct ON ct.`nro_contrato` = c.`nro_contrato`
  14.             INNER JOIN
  15.         empresas e ON e.`cuit` = ct.`cuit`
  16.     WHERE
  17.         e.`razon_social` = 'pepito');
Gracias! pero esta subconsulta me tomaria el promedio de todas las empresas juntas al no haberlo agrupado por empresas!
  #8 (permalink)  
Antiguo 30/05/2014, 12:20
 
Fecha de Ingreso: mayo-2014
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Sub consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Pregunta. ¿Estás intentando ejecutarla desde dónde? ¿PHP, phpMyadmin, consola o Workbench?

Según lo que dice el manual de referencia, es un error en el cliente, no en el servidor ([url]http://dev.mysql.com/doc/refman/5.0/es/commands-out-of-sync.html[/url])
sql manager 2005!
  #9 (permalink)  
Antiguo 30/05/2014, 12:48
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Sub consulta

Cita:
Iniciado por FranZn Ver Mensaje
sql manager 2005!
Seré curioso...
¿Estás usando la versión "for MySQL", no?

Solo para chequearlo.

Asegurémonos de una forma simple: Usa la consola de MySQL y corre la query desde allí. Si falla, al menos nos dará un mensaje mejor que ese.
Si no falla por consola, pues entonces el SM no interpreta bien las sintaxis de MySQL avanzado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 30/05/2014, 12:55
 
Fecha de Ingreso: mayo-2014
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Sub consulta

Si, for mysql. Perdon pero como hago para ejecutarla por consola?? Soy novatisimo
  #11 (permalink)  
Antiguo 30/05/2014, 13:02
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Sub consulta

En el acceso a programas, del menú de inicio de Windows deberías poder acceder a donde está el icono de la consola shell de MySQL.
También debería ser posible desde alguna opción o acceso directo del SQL Manager, e incluso navegando directamente por una ventana de simbolol de sistema de Windows.
Esta última requiere algo de práctica, pero es una buena opción.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 30/05/2014, 18:45
 
Fecha de Ingreso: mayo-2014
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Sub consulta

tengo uno q se llama mysql line command, lo ejecuto y me pide "enter password"
  #13 (permalink)  
Antiguo 30/05/2014, 20:08
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Sub consulta

¿Tienes el MySQL sin password?
Eso sería incorrecto...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 02/06/2014, 10:26
 
Fecha de Ingreso: mayo-2014
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Sub consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Tienes el MySQL sin password?
Eso sería incorrecto...
No entiendo tu pregunta, tené en cuenta que no tengo mucha experiencia con esto.

Uso el EMS Manager. Nada mas
  #15 (permalink)  
Antiguo 02/06/2014, 11:52
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Sub consulta

Si te dice "Enter password", debes escribir la password del root, que registraras al momento de instalar todo.
Si instalaste MySQL sin ponerle clave al root... bueno, esa e suna petida de pata. Nunca se usa una base de datos sin claves, por simple seguridad.

Así que la pregunta es: ¿pusiste clave al root al momento de instalar MySQL?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 04/06/2014, 15:50
 
Fecha de Ingreso: mayo-2014
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Sub consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si te dice "Enter password", debes escribir la password del root, que registraras al momento de instalar todo.
Si instalaste MySQL sin ponerle clave al root... bueno, esa e suna petida de pata. Nunca se usa una base de datos sin claves, por simple seguridad.

Así que la pregunta es: ¿pusiste clave al root al momento de instalar MySQL?
No puse clave, instale el EMS SQL MANAGER sin clave.

De todas formas, te comento que he corrido nuevamente la Query y FUNCIONO!. ya no me tiro ese error!. Que pudo haber sido??
  #17 (permalink)  
Antiguo 04/06/2014, 16:45
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Sub consulta

Algún problema transitorio del servicio...
Otra cosa no se me ocurre en este momento.
¿La query funcionó?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: join, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:19.