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

Problema con mysql en mi consulta

Estas en el tema de Problema con mysql en mi consulta en el foro de Bases de Datos General en Foros del Web. Hola a todos, Por favor necesito ayuda con una consulta en mysql, Mi MYSQL ES: Cita: SELECT vend.idventa, vend.Empresa,vend.Fecha,vend.Evento,vend.Estado ,vent.login, vend.idvendedor FROM vendedores vend WHERE ...
  #1 (permalink)  
Antiguo 04/07/2011, 16:05
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años, 1 mes
Puntos: 0
Información Problema con mysql en mi consulta

Hola a todos,
Por favor necesito ayuda con una consulta en mysql,


Mi MYSQL ES:
Cita:
SELECT vend.idventa, vend.Empresa,vend.Fecha,vend.Evento,vend.Estado ,vent.login,
vend.idvendedor FROM vendedores vend WHERE vend. idvendedor ='2' and
vend.Evento='Conimera' and vend.Estado='Muy Probable' group by vend.Empresa,
vend.Estado
NOTA
Cita:
Teniendo que buscar por el Idvendedor, el Evento y el Estado.
He Utilizado las funcion LIKE Y MATCH pero sin resultado preciso.

Última edición por gcamasca; 04/07/2011 a las 16:17 Razón: cambiar codigo
  #2 (permalink)  
Antiguo 05/07/2011, 09:04
 
Fecha de Ingreso: octubre-2005
Mensajes: 76
Antigüedad: 18 años, 6 meses
Puntos: 5
Respuesta: Problema con mysql en mi consulta

Es dificil que ABB con Estado 'Muy probable" no salga ya que ese registro cumple con todos los criterios del filtro para salir en la carga/consulta. Te diria que algo bueno seria que en vez de existir mas de un estado de la misma compania, que al ser rechazado, editar el mismo registro cambiando su estado, pero me imagino que necesitan una especia de historial donde se aprecia un estado que tuvo un estado que tuvo luego.

No se... sera que crees una tabla hermana? y que tu aplicacion cuando cambien a un estado especifico, "Rechazado" por ejemplo, que mueve los registros con ese Estado a una tabla vendedores_rechazados o algo asi? para conservar estados de ese tipo pero no en la misma tabla.

Asi podrias hacer una SQL donde si se emparejan registros de entre las dos tablas (nombre de la empresa en ambas tablas pero diferente estado), entonces no mostrarlo.

Otra cosa podria ser agregar otro campo mas a la tabla, puede ser un campo integer: 0/1
ABB un dia fue ingresado "Muy Probable", con ese campo en 0, otro dia otro registro de ABB ingresado como "Rechazado" campo en 1. Cuando una empresa sea Rechazada, con una SQL buscas que otros registros tengan ese mismo nombre de Empresa y si el campo integer esta en 0 (porque su Estado es "Muy probable") cambiar el campo integer a 1.

De esa forma:
- ABB "Muy Probable" 1 --> SQL encuentra ABB en dos registros y si existe un "Rechazado" cambiar el 0 a 1
- TELEFONICA "Muy Probable" 0
- ABB "Rechazado" 1 ---> originalmente en 1
- FERREYROS "Muy probable" 0

Es decir, algo tendras que inventarte porque ese sexto sentido o intuisiones es algo que obviamente no tienen los sistemas informaticos y hay que ayudarles, tienes que agregar algun campo mas.. que permita ayudarte a excluir del filtrado de la SQL esos registros.

Supongamos que ese nuevo campo se llame: Aprobacion (integer 0/1)
Select * from vendedores Where ....el filtrado... And Aprob<>1

ABB "Muy Probable" y ABB "Rechazado" tendran Aprob=1 igual como BBVA Aprob=1
y todos los demas con Aprob=0
O creas varios niveles, no solo 0,1... por si luego debe buscarse por otro item de Estado.

Bueno es lo que al momento se me ocurre y por mas que sea extrano o lo mas ocurrentemente loco, pues no se que mas podria ser, pq tu caso es de una sola tabla, ya que si al menos hubiese mas involucradas, aun con eso, se tendria que evaluar si la coincidencia de registros con otras tablas pueda o no ayudar a excluir registros que Si estan cumpliendo con todos los campos del Filtrado, por eso la idea de tener que agregar algo al filtrado que ayude a la SQL a excluir esos registros que no quieres que salgan.

Creo que asi, podrias conservar el historial de Estados, y ayudar al sistema a darle algo mas de precision en incluir o excluir registros a la consulta.

Suerte! o/
  #3 (permalink)  
Antiguo 05/07/2011, 09:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema con mysql en mi consulta

Hola gcamasca:

Si entendí correctamente el problema lo único que tienes que hacer es agregar una condición NOT EXISTS especificando que no debe existir otro registro con un estado diferente en la tabla, sería más o menos así:

Código MySQL:
Ver original
  1. mysql> create table vendedores (Idventa int, Empresa varchar(15), Fecha date,
  2.     -> Estado varchar(15), Evento varchar(15), Idvendedor int);
  3. Query OK, 0 rows affected (0.06 sec)
  4.  
  5. mysql> insert into vendedores values
  6.     -> (1, 'ABB', '2011-06-21', 'Muy Probable',         'Conimera', 2),
  7.     -> (2, 'TELEFONICA', '2011-07-01', 'Muy Probable',  'Conimera', 2),
  8.     -> (3, 'ABB', '2011-07-01', 'Rechazado',    'Conimera', 2),
  9.     -> (4, 'FERREYROS', '2011-07-04', 'Muy Probable',   'Conimera', 2),
  10.     -> (5, 'BBVA', '2011-07-04', 'Aceptado',    'Conimera', 2);
  11. Query OK, 5 rows affected (0.05 sec)
  12. Records: 5  Duplicates: 0  Warnings: 0
  13.  
  14. mysql> select * from vendedores;
  15. +---------+------------+------------+--------------+----------+------------+
  16. | Idventa | Empresa    | Fecha      | Estado       | Evento   | Idvendedor |
  17. +---------+------------+------------+--------------+----------+------------+
  18. |       1 | ABB        | 2011-06-21 | Muy Probable | Conimera |          2 |
  19. |       2 | TELEFONICA | 2011-07-01 | Muy Probable | Conimera |          2 |
  20. |       3 | ABB        | 2011-07-01 | Rechazado    | Conimera |          2 |
  21. |       4 | FERREYROS  | 2011-07-04 | Muy Probable | Conimera |          2 |
  22. |       5 | BBVA       | 2011-07-04 | Aceptado     | Conimera |          2 |
  23. +---------+------------+------------+--------------+----------+------------+
  24. 5 rows in set (0.00 sec)
  25.  
  26. mysql> SELECT *
  27.     -> FROM vendedores V1
  28.     -> WHERE V1. idvendedor ='2' and
  29.     -> V1.Evento='Conimera' and
  30.     -> V1.Estado='Muy Probable' AND NOT EXISTS
  31.     -> (SELECT * FROM vendedores V2
  32.     -> where V1.Idventa != V2.Idventa and
  33.     -> V1.Empresa = V2.Empresa and
  34.     -> V1.Idvendedor = V2.Idvendedor and
  35.     -> V1.Evento = V2.Evento and
  36.     -> V2.Estado != 'Muy Probable');
  37. +---------+------------+------------+--------------+----------+------------+
  38. | Idventa | Empresa    | Fecha      | Estado       | Evento   | Idvendedor |
  39. +---------+------------+------------+--------------+----------+------------+
  40. |       2 | TELEFONICA | 2011-07-01 | Muy Probable | Conimera |          2 |
  41. |       4 | FERREYROS  | 2011-07-04 | Muy Probable | Conimera |          2 |
  42. +---------+------------+------------+--------------+----------+------------+
  43. 2 rows in set (0.00 sec)

dale un Vistazo para ver si es lo que necesitas.

Saludos
Leo.
  #4 (permalink)  
Antiguo 06/07/2011, 14:28
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema con mysql en mi consulta

hola a todos,
Gracias por sus comentarios..
UserCod: tenemos la misma logica..
leonardo_josue: excelente tu consulta mysql me sirvio mucho, gracias.


Saludos,
Giancarlo

Última edición por gcamasca; 15/07/2011 a las 14:50 Razón: Saludos..

Etiquetas: bd, mysql, php+mssql, bases-de-datos
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 17:17.