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

[SOLUCIONADO] contar y filtrar en consulta my sql

Estas en el tema de contar y filtrar en consulta my sql en el foro de SQL Server en Foros del Web. Hola buenos días, soy nuevo en el foro y tengo un problema hace varios días el cual es que no puedo plantear bien una consulta ...

  #1 (permalink)  
Antiguo 14/05/2013, 07:50
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
contar y filtrar en consulta my sql

Hola buenos días, soy nuevo en el foro y tengo un problema hace varios días el cual es que no puedo plantear bien una consulta mysql. estoy realizando una aplicación para llevar un registro de accidentes en vb.net en la cual debo realizar una búsqueda y filtrar por algunos parámetros, la tabla accidenteContratista almacena el campo potencial este campo pose 3 diferentes datos (bajo-medio-alto), lo que necesito hacer es contar cual es la cantidad de datos que hay en el campo de cada uno, por ejemplo

bajo = 10
medio = 5
alto = 2

admas debo realizar un filtro por empresa (tabla empresa y estas dos tablas se relacionan por el campo rut). he realizado algunos intentos pero sin resultado ya que la sintaxis no la manejo por completo, les dejo lo que yo he intentado de hacer(falta el filtro por empresa aun)

Código MySQL:
Ver original
  1. select accidentecontratista, e.rut, e.nombre count(potencial) as cantidad1, count(potencial) as cantidad2, count(potencial) as cantidad3
  2.  from accidentecontratista join empresa e on e.rut=accidentecontratista.rutempresa
  3. where potencial = 'Bajo' and potencial = 'Medio' and potencial = 'Alto'

Saludos

Última edición por gnzsoloyo; 14/05/2013 a las 10:40 Razón: SQL mal etiquetado y con codigo de programacion
  #2 (permalink)  
Antiguo 14/05/2013, 08:00
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

2 cosas 1 este es un foro de sql server no de mysql y 2 te diria que pongas un pequeño ejemplo de tus datos y lo que quieres conseguir pero la sintaxis seria en sql server y tendrias que adaptarla a mysql
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 14/05/2013, 08:34
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Cita:
Iniciado por Libras Ver Mensaje
2 cosas 1 este es un foro de sql server no de mysql y 2 te diria que pongas un pequeño ejemplo de tus datos y lo que quieres conseguir pero la sintaxis seria en sql server y tendrias que adaptarla a mysql
Disculpen mi confucion pero me sirve de igual manera trabajar con sql server, en mi base de datos se almacena

potencial

bajo
alto
alto
alto
medio
bajo
bajo
medio
alto



y necesito mostrar en un objeto listview el total filtrado asi

empresa alto medio alto

empresa A 3 2 4

El campo potencial que es donde se almacena el nivel de gravedad esta en la tabla AccidenteContratista con clave primario rut y empresa esta en la tabla Empresa con clable rimario rut
  #4 (permalink)  
Antiguo 14/05/2013, 09:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

si te sirve sql server puedes usar la funcion pivot :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 14/05/2013, 09:42
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: contar y filtrar en consulta my sql

Hola alvar0o0:

Tal como lo menciona Libras, en SQL Server podrías utilizar la función PIVOT, en MySQL podrías hacer sumas condicionales... observa este ejemplo:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +-----------+
  3. | potencial |
  4. +-----------+
  5. | bajo      |
  6. | alto      |
  7. | alto      |
  8. | alto      |
  9. | medio     |
  10. | bajo      |
  11. | bajo      |
  12. | medio     |
  13. | alto      |
  14. +-----------+
  15. 9 rows in set (0.00 sec)
  16.  
  17. mysql> SELECT
  18.     -> SUM(IF(potencial = 'bajo', 1, 0)) bajo,
  19.     -> SUM(IF(potencial = 'medio', 1, 0)) medio,
  20.     -> SUM(IF(potencial = 'alto', 1, 0)) alto
  21.     -> FROM tabla;
  22. +------+-------+------+
  23. | bajo | medio | alto |
  24. +------+-------+------+
  25. |    3 |     2 |    4 |
  26. +------+-------+------+
  27. 1 row in set (0.00 sec)

Este tipo de consultas también es válido para SQL Server, sólo tendrías que cambiar el IF por un CASE-WHEN:

Código SQL:
Ver original
  1. SELECT
  2.   SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  3.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,
  4.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto
  5. FROM tabla;

Saludos
Leo.
  #6 (permalink)  
Antiguo 14/05/2013, 10:41
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: contar y filtrar en consulta my sql

Cita:
Disculpen mi confucion pero me sirve de igual manera trabajar con sql server
Perfecto, ¿pero en qué DBMS vas a trabajar realmente?
Si es MySQL lo muevo de foro, y te advierto que las soluciones de SQL Server no te van a servir.
Si es SQL Server, lo dejo acá.
__________________
¿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 14/05/2013, 10:54
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Hola gnzsoloyo en definitiva trabajare en sql server asi que no lo muevas

leonardo_josue hice unas pequeñas modificaciones segun mi codigo en vb.net y funciona perfecto es jsto lo que necesitaba, pero me gustaria saber como podria agregar una suma total de los 3 registros? lo otro es como no conosco mucho de la sintaxis me podrias explicar un poco el codigo que me has enseñado?

dejo por aqui la consulta final

Código SQL:
Ver original
  1. SELECT e.nombre, SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  2.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  3.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto
  4. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  5. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  6. GROUP BY e.nombre
saludos

Última edición por gnzsoloyo; 14/05/2013 a las 11:02
  #8 (permalink)  
Antiguo 15/05/2013, 07:04
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Hola amigos, disculpen mi insistencia pero me urge algo, como puedo añadir al código anterior la suma que me va mostrando en pantalla de los tres casos, he hecho modificaciones pero sin éxito, ojala me puedan orientar.

Saludos
  #9 (permalink)  
Antiguo 15/05/2013, 08:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

no te sirve:

Código SQL:
Ver original
  1. SELECT nombre,SUM(bajo),SUM(medio),SUM(alto) FROM(
  2. SELECT e.nombre, SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  3.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  4.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto
  5. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  6. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  7. GROUP BY e.nombre
  8. ) t1 GROUP BY nombre

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 15/05/2013, 09:17
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Cita:
Iniciado por Libras Ver Mensaje
no te sirve:

Código SQL:
Ver original
  1. SELECT nombre,SUM(bajo),SUM(medio),SUM(alto) FROM(
  2. SELECT e.nombre, SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  3.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  4.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto
  5. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  6. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  7. GROUP BY e.nombre
  8. ) t1 GROUP BY nombre

saludos!
Hola Libras, gracias por tu dispocicion a ayudar.

tengo algunos problemas donde asignas "nombre" al principio y en el group by a que nombre haces referencia?

Saludos
  #11 (permalink)  
Antiguo 15/05/2013, 09:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

como que de donde saco nombre pues de tu consulta jejejeje, como diria jack el destripador vamos por partes

Código SQL:
Ver original
  1. --Lo que estoy haciendo es un subquery, o tomar tu query y convertirlo en una tabla, nombre seria el nombre de la empresa, y el group by es por este mismo campo(esto para hacer la suma de los valores que necesitas)
  2. SELECT nombre,SUM(bajo),SUM(medio),SUM(alto) FROM(
  3.  
  4. --este es tu query
  5. SELECT e.nombre, SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  6.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  7.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto
  8. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  9. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  10. GROUP BY e.nombre
  11.  
  12.  
  13. ) t1 GROUP BY nombre

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 15/05/2013, 11:02
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: contar y filtrar en consulta my sql

Hola de nuevo alvar0o0:

Si quieres obtener la suma de los tres campos, simplemente agrega un SUM(1) a tu consulta:

Código SQL:
Ver original
  1. SELECT e.nombre,
  2.   SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  3.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  4.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto,
  5.   SUM(1) total
  6. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  7. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  8. GROUP BY e.nombre

Haz la prueba y nos comentas.

Saludos
Leo.
  #13 (permalink)  
Antiguo 15/05/2013, 11:33
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Cita:
Iniciado por Libras Ver Mensaje
como que de donde saco nombre pues de tu consulta jejejeje, como diria jack el destripador vamos por partes

Código SQL:
Ver original
  1. --Lo que estoy haciendo es un subquery, o tomar tu query y convertirlo en una tabla, nombre seria el nombre de la empresa, y el group by es por este mismo campo(esto para hacer la suma de los valores que necesitas)
  2. SELECT nombre,SUM(bajo),SUM(medio),SUM(alto) FROM(
  3.  
  4. --este es tu query
  5. SELECT e.nombre, SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  6.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  7.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto
  8. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  9. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  10. GROUP BY e.nombre
  11.  
  12.  
  13. ) t1 GROUP BY nombre

saludos!
tenia una confución entre tantos nombres jeje, lo que ocurre ahora es que tengo un conflicto con mi programa pero al parecer no es problema de la query sino a la asignación de datos que le doy en mi programa al objeto listview ya que con la modificación no puedo asignar por ejemplo 'bajo' crea conflicto con la nueva declaración
  #14 (permalink)  
Antiguo 15/05/2013, 11:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

prueba con

Código SQL:
Ver original
  1. SELECT nombre,SUM(bajo) AS bajo ,SUM(medio) AS medio ,SUM(alto) AS alto FROM(
  2.  
  3. SELECT e.nombre, SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  4.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  5.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto
  6. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  7. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  8. GROUP BY e.nombre
  9.  
  10.  
  11. ) t1 GROUP BY nombre

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 15/05/2013, 11:46
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: contar y filtrar en consulta my sql

Probaste la consulta que te puse??? funcionó o no??? con respecto al problema que mencionas, es posible que estés tratando de utilizas el nombre de campo "bajo", pero este campo no existe en la consulta que te puso Libras... prueba asignando un alias a la campos de suma:

Código:
SELECT 
  nombre, sum(bajo) bajo, sum(medio) medio, sum(alto) alto 
FROM(
....
Aunque no creo que esta consulta haga lo que pides, ya que te sumaría a nivel de columna, no a nivel de registros... pero bueno...

En cuanto a la explicación de la consulta que puse, en realidad funciona como una clasificación, es decir, clasifica en primer lugar cada registro, poniéndole un 1 para cada caso, al final simplemente cuenta el número de 1's para cada categoría... observa esta consulta, sin el SUM, se ve más claramente a lo que me refiero:

Código SQL:
Ver original
  1. SELECT potencial,
  2. CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END bajo,
  3. CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END medio,
  4. CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END alto,
  5. 1 total
  6. FROM tabla;
  7. +-----------+------+-------+------+-------+
  8. | potencial | bajo | medio | alto | total |
  9. +-----------+------+-------+------+-------+
  10. | bajo      |    1 |     0 |    0 |     1 |
  11. | alto      |    0 |     0 |    1 |     1 |
  12. | alto      |    0 |     0 |    1 |     1 |
  13. | alto      |    0 |     0 |    1 |     1 |
  14. | medio     |    0 |     1 |    0 |     1 |
  15. | bajo      |    1 |     0 |    0 |     1 |
  16. | bajo      |    1 |     0 |    0 |     1 |
  17. | medio     |    0 |     1 |    0 |     1 |
  18. | alto      |    0 |     0 |    1 |     1 |
  19. +-----------+------+-------+------+-------+

Al hacer la sumatoria de los 1's te da el resultado esperado... observa la columna con 1, esta te sirve para contabilizar todos los registros, sin importar el potencial.

Saludos
Leo.
  #16 (permalink)  
Antiguo 15/05/2013, 12:02
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Hola nuevamente,

Muchas gracias por su dispocicion a ayudar y enseñar, al final me dio resultado con el método que menciono leonardo_josue, aun así muchas gracias a los dos por su ayuda.
  #17 (permalink)  
Antiguo 16/05/2013, 07:38
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Hola otra vez.

Realizando pruebas con la query que me han enseñado me ha ocurrido un error, haber les explico al momento de hacer un ingreso de un nuevo accidente el listado de gravedad no se actualiza de lo mejor el total de accidente se actualiza perfecto, pero no así el listado, les dejare una imagen para que me comprendan



como se aprecia en la imagen la empresa G presenta el problema que les planteo, al momento de editar el accidente y cambiarlo de nivel de gravedad esto se soluciona pero si no se edita esto no se soluciona. saludos

http://www.subeimagenes.com/img/carga-637571.html

Última edición por alvar0o0; 16/05/2013 a las 07:46 Razón: no muestra imagen
  #18 (permalink)  
Antiguo 16/05/2013, 08:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

no se ve la imagen, pero considero que tu problema es que agregaste un nuevo valor ademas de alto,bajo y medio correcto? si es asi tendrias que agregar ese nuevo valor al query ya que el query solo espera estos 3 valores.

Código SQL:
Ver original
  1. SELECT potencial,
  2. CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END bajo,
  3. CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END medio,
  4. CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END alto,
  5. CASE WHEN potencial = 'nuevo_potencial' THEN 1 ELSE 0 END nuevo_potencial,
  6. 1 total
  7. FROM tabla;
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #19 (permalink)  
Antiguo 16/05/2013, 08:43
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: contar y filtrar en consulta my sql

Hola de nuevo alvar0o0:

Tal como lo menciona Libras, el detalle al poner un SUM(1) es que te contabiliza todos los registros, no solo los que contengan 'bajo', 'medio' o 'alto'... si tuvieras cualquier otro valor, incluyendo valores nulos se seguirían contabilizando... aquí hay de dos sopas, o mediante programación te aseguras que estos tres valores son los únicos que pueda tener tu campo (por ejemplo con una enumeración) o en su defecto modificas el sum(1) por algo como esto:

Código MySQL:
Ver original
  1. SELECT e.nombre,
  2.   SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  3.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  4.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto,
  5.   SUM(CASE WHEN potencial IN ('bajo', 'medio', 'alto') THEN 1 ELSE 0 END) total
  6. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  7. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  8. GROUP BY e.nombre

Esta consulta te contabilizará sólo los registros que tienen estos tres valores, pero te expones a que no te presente todos los registros... otra opción sería hacer algo como esto:


Código MySQL:
Ver original
  1. SELECT e.nombre,
  2. SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  3. SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  4. SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto,
  5. SUM(CASE WHEN potencial NOT IN ('bajo', 'medio', 'alto') THEN 1 ELSE 0 END) otro,
  6. SUM(1) total
  7. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  8. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  9. GROUP BY e.nombre

Es decir, la categoría OTRO contabilizaría todos los casos distintos a los tres que estás analizando, el SUM(1) te seguiría contabilizando todos los registros...

Saludos
Leo.
  #20 (permalink)  
Antiguo 16/05/2013, 09:20
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Hola, para empesar encuentro acertadas sus aclaraciones pero el tema en si es otro, que lastima que no se refleje la imagen ya que hay se ve bien lo que quiero decir, pero se los mostrare de forma grafica

Empresa Baja Media Alta Total
empresa G 2 1 0 4

La suma del total es la correcta ya que existe 4 registros de accidentes el tema es que no se ve reflejado en la columna del nivel de accidente.

deberia ser asi

Empresa Baja Media Alta Total
empresa G 2 2 0 4

esto ocurre cuando se hace un nuevo ingreso si se modifica por ejemplo de medio pasa a alto hay se soluciona

Empresa Baja Media Alta Total
empresa G 2 1 1 4

saludos
  #21 (permalink)  
Antiguo 16/05/2013, 09:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

Nosotros hemos puesto ejemplos de tablas codigos y demas, porque en lugar de poner una imagen pones un ejemplo de tus tablas? y de la insercion? para entender mejor la problematica....digo :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #22 (permalink)  
Antiguo 16/05/2013, 10:19
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Disculpas por la presentacion del problema, ya que no tengo acceso a la base de datos no puedo reflejar las tablas de forma grafica.

Código MySQL:
Ver original
  1. +-----------+------+-------+------+-------+
  2. | empresa   | bajo | medio | alto | total |
  3. +-----------+------+-------+------+-------+
  4. | empresa G |    2 |     1 |    0 |     4 |
  5. +-----------+------+-------+------+-------+

Ojala de esta manera se vea mas entendible, como les contaba el total esta bien, el problema es que no muestra el valor en la fila que corresponde como en el ejemplo de aca abajo

Código MySQL:
Ver original
  1. +-----------+------+-------+------+-------+
  2. | empresa   | bajo | medio | alto | total |
  3. +-----------+------+-------+------+-------+
  4. | empresa G |    2 |     2 |    0 |     4 |
  5. +-----------+------+-------+------+-------+

Saludos
  #23 (permalink)  
Antiguo 16/05/2013, 10:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

cuando digo ejemplo no te digo que me pongas una imagen de tu tabla graficamente, a lo que me refiero es que pongas..


tabla empresas

empresa riesgo
mi_empresa alto
otra empresa bajo

etc etc...


asi para saber como estan tus datos y como estas haciendo la insercion y porque no te toma el valor que necesitas....

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #24 (permalink)  
Antiguo 16/05/2013, 11:12
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Cita:
Iniciado por Libras Ver Mensaje
cuando digo ejemplo no te digo que me pongas una imagen de tu tabla graficamente, a lo que me refiero es que pongas..


tabla empresas

empresa riesgo
mi_empresa alto
otra empresa bajo

etc etc...


asi para saber como estan tus datos y como estas haciendo la insercion y porque no te toma el valor que necesitas....

saludos!

jajaja ok disculpa.

Las tablas que ocupo en este caso son:

AccidenteContratista

IdAccidente
Rut empresa
descripcion
idarea
fecha
Potencial

y la tabla:

Empresa

Rut
Nombre
Direccion
telefono
representante
correo

las dos tabla se relacionan por el campo rutempresa y rut.

Saludos
  #25 (permalink)  
Antiguo 16/05/2013, 11:20
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

y los valores??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #26 (permalink)  
Antiguo 16/05/2013, 12:58
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: contar y filtrar en consulta my sql

Hola alvar0o0:

En otras palabras, lo que pide Libras es que hagas un

SELECT * FROM tu_tabla WHERE empresa = 'empresa G', para ver cómo tienes almacenada la información y ver donde está el error...

Probasta las opciones que puse??? es decir, estás seguro que sólo tienes los tres valores que mencionas??? es decir, según tu dices que debería presentar 2 casos en bajo y 2 casos en medio... pero la consulta no tiene errores...

¿¿¿estás seguro que no existen valores nulos u otros valores que pudieran estar afectando la suma???

Es por eso que te hice las dos propuestas, con el CASE-WHEN en lugar del SUM(1) o con el caso OTROS, para verificar el estado de la información..

Saludos
Leo.
  #27 (permalink)  
Antiguo 16/05/2013, 12:58
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Cita:
Iniciado por Libras Ver Mensaje
y los valores??
cuando te refieres a valores son los que almacena cada campo?

vuelvo a repetir disculpa mi ignorancia.
  #28 (permalink)  
Antiguo 16/05/2013, 13:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: contar y filtrar en consulta my sql

si los valores que almacena cada campo o como bien menciona leonardo, los datos de la empresa G para ver porque no sale en el query que te mandaron
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #29 (permalink)  
Antiguo 16/05/2013, 21:17
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Hola nuevamente

Haber para explicar el problema, esto no es solo con la empresa G esto ocurre con cualquier nuevo ingreso donde se ingresa el nivel de gravedad. en el total no hay problema ya que refleja el total de los ingresos independiente de el nivel de gravedad que sea, el problema en si es que no suma un nuevo ingreso, este se refleja en pantalla cuando se hace una actualización de la gravedad.


¿¿¿estás seguro que no existen valores nulos u otros valores que pudieran estar afectando la suma???

revise los datos y no hay valores nulos todos estan correctos

Ademas Hice pruebas con los dos casos que propone leonardo en el total siempre es correcto pero no refleja en la lista los resultados correctos.

Código MySQL:
Ver original
  1. +-----------+------+-------+------+-------+
  2. | empresa   | bajo | medio | alto | total |
  3. +-----------+------+-------+------+-------+
  4. | empresa G |    2 |     1 |    0 |     4 |
  5. +-----------+------+-------+------+-------+

y para agregar la empresa almacena los siguientes datos

Rut = 88.888.888-8
Nombre = Empresa G
Direccion = Angol 324
Telefono = 8293849
Correo = [email protected]

bueno ojala me puedan ayudar.

Saludos
  #30 (permalink)  
Antiguo 17/05/2013, 09:13
 
Fecha de Ingreso: mayo-2013
Mensajes: 22
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: contar y filtrar en consulta my sql

Amigos después de tantas pruebas he descubierto el error y no son sus query, estas funcionan perfecto el problema era en el objeto de mi formulario en mi programa que no realizaba bien el ingreso, de todas maneras muchas gracias por la disposición a ayudar y ha enseñar.

Saludos

Etiquetas: filtrar, registro, select, sql, 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:59.