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

Consulta macabra

Estas en el tema de Consulta macabra en el foro de Mysql en Foros del Web. Buen día vengo austedes por una pregunta de query. Veran: Tengo que hacer una consulta a una tabla y en la cual tengo un tipo ...
  #1 (permalink)  
Antiguo 11/05/2012, 13:37
 
Fecha de Ingreso: abril-2008
Mensajes: 316
Antigüedad: 16 años
Puntos: 3
Consulta macabra

Buen día vengo austedes por una pregunta de query.

Veran:

Tengo que hacer una consulta a una tabla y en la cual tengo un tipo de pago y una observacion mas los demas campos la consullta debe ser algo asi:

Es asi es como esta ahorita mas omenos:
SELECT * FROM tabla WHERE tipo_de_pago = (todos) AND obsevacion IS NULL

Asi como debe de quedar
SELECT * FROM tabla WHERE tipo_de_pago = (todos) pero cuando sea 8 verifica que la observacion sea diferente de "Este valor".

Y estoy pensado si deberia quebrarme el cerebro pensando como hacer esa consulta con query o si es mejor separarla en varias consultas ejecutadas desde el codigo, por que los valores que obtengo de la tabla los sumo.

Gracias de antemano.
  #2 (permalink)  
Antiguo 11/05/2012, 14:55
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta macabra

Hola Rogeliomx...

veamos si entendí correctamente... la consulta deberá traer todos los registros donde tu campo donde el campo observación sea NULL, sin importar el tipo_de_pago, PERO SI EL tipo_de_pago ES 8 ENTONCES SÓLO SE DEBEN MOSTRAR LOS CAMPOS DONDE OBSERVACIÓN SEA NO NULL correcto???

checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+--------------+-------------+
  3. | id   | tipo_de_pago | observacion |
  4. +------+--------------+-------------+
  5. |    1 |            1 | NULL        |
  6. |    2 |            2 | algo        |
  7. |    3 |            3 | NULL        |
  8. |    4 |            5 | otro        |
  9. |    5 |            8 | NULL        |
  10. |    6 |            8 | algo        |
  11. +------+--------------+-------------+
  12. 6 rows in set (0.05 sec)
  13.  
  14. mysql> SELECT * FROM tabla
  15.     -> WHERE
  16.     -> (tipo_de_pago != 8 AND observacion IS NULL)  OR
  17.     -> (tipo_de_pago = 8 AND observacion IS NOT NULL);
  18. +------+--------------+-------------+
  19. | id   | tipo_de_pago | observacion |
  20. +------+--------------+-------------+
  21. |    1 |            1 | NULL        |
  22. |    3 |            3 | NULL        |
  23. |    6 |            8 | algo        |
  24. +------+--------------+-------------+
  25. 3 rows in set (0.00 sec)

Los registros con id's (2 y 4) no se muestran porque la observación NO ES IGUAL A NULL. El registro con id 5 no se muestra PUES AUNQUE LA OBSERVACIÓN ES NULL, EL tipo_de_pago es 8... por lo tanto no cumple con la segunda condición. Checa el otro post que publicaste para entender mejor por qué el uso de los paréntesis.

Si esto no es lo que necesitas sería conveniente que pongas algunos datos de ejemplo y a partir de estos nos digas que es lo que necesitas de salida, para poder darte una mejor respuesta.

Saludos
Leo.
  #3 (permalink)  
Antiguo 11/05/2012, 15:04
 
Fecha de Ingreso: abril-2008
Mensajes: 316
Antigüedad: 16 años
Puntos: 3
Respuesta: Consulta macabra

Muchas gracoas es lo que estoy buscando solo que no le entiendo muy bien, sin embargo checare los links y analizare el ejemplo primero, muchas gracias por su ayuda, ya esoty entendiendo un poco mas.
  #4 (permalink)  
Antiguo 11/05/2012, 15:12
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta macabra

Hola de nuevo:

Te recomiendo que estudies acerca de teoría de conjuntos y álgebra relacional... el tema es bastante amplio como para poder exponerlo en el foro... no esperes entender todo simplemente con leer un par de ligas. Por lo que puedo deducir apenas te estás iniciando en el mundo de las BD y SQL... así es que paciencia y lectura jejeje...

Practica consultas sencillas y te aseguro que pronto podrás desarrollar consultas complejas y si tienes problemas pregúntale a San GOOGLE o a santa WIKIPEDIA... te aseguro que ellos tienen por lo general la respuesta que buscas... y finalmente está el foro, aquí estaremos dispuestos a ayudar en lo que podamos

Saludos
Leo.
  #5 (permalink)  
Antiguo 11/05/2012, 16:20
 
Fecha de Ingreso: abril-2008
Mensajes: 316
Antigüedad: 16 años
Puntos: 3
Respuesta: Consulta macabra

Buen día leonar, mirando su tabla suponga que quiere obtener todos los registros excepto donde el tipo_de_pago = 8 y que la observacion sea = 'algo' ?? la consulta si debe mostrar el campo donde tipo_de_pago = 8 y observaciones = null??

osea debe mostrar todos los registros exepto el del id =6 por que ese registro el tipo de pago = 8 y la observa = 'algo'

Como quedaria esa consulta estoy practicando con la tabla que hizo y no obtengo buenos resultado, falta de mostrar algunos registro y es comprensible por que no estoy haciendo bien la consulta pero no logro arreglarla.

SELECT * FROM tabla WHERE (observaciones IS NULL) OR (observaciones != 'algo' AND tipo_de_pago != 8)

Etiquetas: query, select, tabla, campos
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 21:29.