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

no me da el resultado experado consulta mysql

Estas en el tema de no me da el resultado experado consulta mysql en el foro de Mysql en Foros del Web. Hola necesita extraer el nombre de trabajadores de una empresa con su nombre bonificacion, estos nombres de empresa se repiten pero solo quiero extraer el ...
  #1 (permalink)  
Antiguo 23/01/2015, 04:56
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
no me da el resultado experado consulta mysql

Hola necesita extraer el nombre de trabajadores de una empresa con su nombre bonificacion, estos nombres de empresa se repiten pero solo quiero extraer el nombre con la bonificacion mas alta.

las tabla seria esta:

EMPREADO

id
1
2
3
4
nombre
saul
ana
andres
ana

bonificacion
10
8
3
5

evento
metal
turismo
alimentacion
asesoramiento

Partiendo de estos datos me tendria que mostrar este resultado:

id
1
2
3

nombre
saul
ana
andres
evento
metal
turismo
alimentacion

yo hice algo asi:

Código MySQL:
Ver original
  1. SELECT id, nombre,evento FROM empreado.e
  2. WHERE e.bonificacion = ( SELECT MAX( bonificacion)  FROM empreado);

Pero solo me muestra un registro y necesito todos y su uno se repite mostrarme el que la bonificacion sea mas alta, un saludo.

Última edición por gnzsoloyo; 23/01/2015 a las 05:28
  #2 (permalink)  
Antiguo 23/01/2015, 05:31
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: no me da el resultado experado consulta mysql

Le estás pidiendo que te devuelva el empleado cuya bonificación sea igual a la mayor de las bonificaciones. Y en la muestra de datos tienes un único empleado con ese dato.
Es evidente que te devolverá sólo un registro, ya que sólo uno cumple con la condición...

No hay error.

Si tuvieses dos con 10 de bonificación, saldrían dos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/01/2015, 05:34
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: no me da el resultado experado consulta mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Le estás pidiendo que te devuelva el empleado cuya bonificación sea igual a la mayor de las bonificaciones. Y en la muestra de datos tienes un único empleado con ese dato.
Es evidente que te devolverá sólo un registro, ya que sólo uno cumple con la condición...

No hay error.

Si tuvieses dos con 10 de bonificación, saldrían dos.
si tienes razon la consulta seria correcta, pero como quiero modificarla para que me muestre todos los empreados y su evento pero si un empreado se repite que me muestre el empreado con mayor valor en su campo bonificacion, seria posible hacer esa consulta?
saludos
  #4 (permalink)  
Antiguo 23/01/2015, 05:42
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: no me da el resultado experado consulta mysql

Cita:
seria posible hacer esa consulta?
Es una consulta básica, elemental, para estudiantes...

TE recomiendo acudir a manuales y tutoriales para despejar dudas sobre SQL básico.

Si quieres la bonificación por empleado y evento:
Código SQL:
Ver original
  1. SELECT id, nombre, evento, MAX(bonificacion) bonificacion
  2. FROM empreado.e
  3. GROUP BY id, nombre, evento;

Si quieres los empelados y eventos, sin la bonificación:

Código SQL:
Ver original
  1. SELECT id, nombre, evento
  2. FROM (SELECT id, nombre, evento FROM empreado.e  ORDER BY bonificacion DESC) EMP
  3. GROUP BY id;

Algunas paginas para comenzar en SQL:

http://deletesql.com/
http://www.mysqlya.com.ar/
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 23/01/2015 a las 05:57 Razón: Faltaba el DESC en el ORDER BY
  #5 (permalink)  
Antiguo 23/01/2015, 05:57
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: no me da el resultado experado consulta mysql

Hola, quiero los empleados y su evento pero no me sirve la consulta ya que me muestra todos y pretendo que si un usuario sale repetido en la tabla solo me muestro uno con su bonificacion mas alta, es decir me tendria que mostrar solo tres registro de 4. estube leyendo manual pero no encuentro nada al respecto, alguna idea para hacerlo.
saludos
  #6 (permalink)  
Antiguo 23/01/2015, 06:01
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: no me da el resultado experado consulta mysql

Pues si quieres que no salga repetido, quita el evento del GROUP BY...

El SQL tiene flexibilidad apra responder consultas, pero tienes que entenderlo.

Lee con cuidado en los manuales cuál es el uso de esa cláusula.
__________________
¿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 23/01/2015, 06:19
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: no me da el resultado experado consulta mysql

Ah vale!! muchas gracias, leere los manuales que pusistes, saludos.
  #8 (permalink)  
Antiguo 23/01/2015, 06: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: no me da el resultado experado consulta mysql

Te dejo la solucion un poco más clara:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE IF NOT EXISTS EMPREADO(
  2.     -> nombre VARCHAR(100) NOT NULL,
  3.     -> bonificacion INT UNSIGNED NOT NULL,
  4.     -> evento VARCHAR (50) NOT NULL);
  5. Query OK, 0 rows affected (0.01 sec)
  6.  
  7. mysql> INSERT INTO empreado
  8.     -> VALUES
  9.     -> (1, 'SAUL', 10, 'METAL'),
  10.     -> (2, 'ANA', 8, 'TURISMO'),
  11.     -> (3, 'ANDRES', 3, 'ALIMENTACION'),
  12.     -> (4, 'ANA', 5, 'ASESORAMIENTO');
  13. Query OK, 4 rows affected (0.00 sec)
  14. Records: 4  Duplicates: 0  Warnings: 0
  15.  
  16. mysql>
Código MySQL:
Ver original
  1. mysql> SELECT id, nombre, evento, MAX(bonificacion) bonificacion
  2.     -> FROM empreado
  3.     -> GROUP BY id, nombre, evento
  4.     -> ORDER BY 4 DESC;
  5. +----+--------+---------------+--------------+
  6. | id | nombre | evento        | bonificacion |
  7. +----+--------+---------------+--------------+
  8. |  1 | SAUL   | METAL         |           10 |
  9. |  2 | ANA    | TURISMO       |            8 |
  10. |  4 | ANA    | ASESORAMIENTO |            5 |
  11. |  3 | ANDRES | ALIMENTACION  |            3 |
  12. +----+--------+---------------+--------------+
  13. 4 rows in set (0.00 sec)
  14.  
  15. mysql>
  16. mysql> SELECT id, nombre, evento, MAX(bonificacion) bonificacion
  17.     -> FROM empreado
  18.     -> GROUP BY nombre
  19.     -> ORDER BY 4 DESC;
  20. +----+--------+--------------+--------------+
  21. | id | nombre | evento       | bonificacion |
  22. +----+--------+--------------+--------------+
  23. |  1 | SAUL   | METAL        |           10 |
  24. |  2 | ANA    | TURISMO      |            8 |
  25. |  3 | ANDRES | ALIMENTACION |            3 |
  26. +----+--------+--------------+--------------+
  27. 3 rows in set (0.00 sec)
__________________
¿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: registro, resultado, 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 13:43.