MySQL - Consulta Compleja con Case o IF

   
Vista:

Consulta Compleja con Case o IF

Publicado por Patricio p.romero@terra.cl (14 intervenciones) el 25/05/2015 13:03:58
Estimados

necesito realizar la siguiente consulta:
tengo una tabla con los campos:

EXAMEN UNIDAD
RADIOGRAFIA DE PELVIS RADIOLOGIA
RADIOGRAFIA DE TORAX RADIOLOGIA
ECOTOMOGRAFIA ABDOMINAL ECOTOMOGRAFIA
ECOTOMOGRAFIA MAMARIA ECOTOMOGRAFIA
ECOTOMOGRAFIA TIROIDEA ECOTOMOGRAFIA
ECOTOMOGRAFIA TESTICULAR ECOTOMOGRAFIA
MAMOGRAFIA MAMOGRAFIA

PREVISION------------- VALOR ---------- COMISION
FONASA --------------- $XXX --------------- $?
CONVENIO 1 ---------- $XXX --------------- $?
CONVENIO 2 ---------- $XXX --------------- $?
CONVENIO 3 ---------- $XXX --------------- $?

La consulta debe entregar lo siguiente:

Si LA UNIDAD es MAMOGRAFIA COMISION $4.000 NO IMPORTA TIPO PREVISION
Si LA UNIDAD ES ECOTOMOGRAFIA COMISION EL 70% DEL VALOR PARA TODOS LOS TIPOS DE PREVISION
EXCEPTO LOS CONVENIOS (CONVENIO.*) DONDE SI EL EXAMEN ES ECOTOMOGRAFIA MAMARIA LA COMISION SERA $9.000 Y SI ES ECOTOMOGRAFIA ABDOMINAL LA COMISION SERA $10.000
SI LA UNIDAD ES RADIOLOGIA LA COMISION ES EL 20% DEL VALOR DEL EXAMEN

Tengo lo siguiente realizado

"SELECT *,
CASE unidad WHEN 'ECOTOMOGRAFIA' THEN valor * 0.7
WHEN 'RADIOLOGIA' THEN valor * 0.2
WHEN 'MAMOGRAFIA' THEN 4000
ELSE 0
END
as 'comision'
FROM examenes"

Pero no se como colocar los IF para los casos que tengo que ademas de la UNIDAD debo contemplar el tipo de EXAMEN.

Ojala me puedan ayudar.

de antemano Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta Compleja con Case o IF

Publicado por leonardo_josue (81 intervenciones) el 25/05/2015 16:49:34
Hola Patricio:

No se entiende bien tu modelo, ¿de cuántas tablas estamos hablando? por un lado hablas de exámenes, por otra de comisiones, pero no nos dices cómo están relacionadas ambas tablas, o si existe alguna otra tabla relacionada... comienza por definir todas tus tablas, postea su estructura y pon datos de ejemplo... a partir de los datos que pongas de ejemplo, postea qué esperas obtener como salida, de esta manera será más fácil tratar de darte una respuesta.

Ahora bien, con respecto a las condiciones, te recuerdo que el CASE-WHEN tiene dos formas para usarse... la primera es como la estás haciendo, es decir, considera sólo un campo o variable y de ahí se definen cada uno de los casos:

1
2
3
4
5
6
CASE variable
   WHEN caso1 THEN ...
   WHEN caso2 THEN ...
   WHEN caso2  ...
   ELSE ...
END

Esto es parecido a un SWITCH en programación... sin embargo, hay otra forma para usar el CASE, que sería una especie de IF's anidados, es decir, algo como esto:

1
2
3
4
5
6
7
8
CASE WHEN (campo <= algo) THEN ...
ELSE
   CASE WHEN (tabla1.campo = 'esto' AND tabla2.campo != 'otro') THEN ...
   ELSE
      CASE WHEN (aquí pones otra condición boleana)
      END
   END
END

es decir, en lugar de simplemente comprara que un campo tenga un valor en específico, puedes hacer cualquier comparación boleana, utilizando los operadores relacionales (=, <, >, !, >= , <=, !=) y los operadores lógicos (AND, OR, NOT). de tal suerte que con estos operadores puedes comparar tantos campos o tantos valores como necesites.

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta Compleja con Case o IF

Publicado por Patricio (14 intervenciones) el 25/05/2015 16:58:52
Estimado

Es una sola tabla con esos campos, comparalo con una planilla excel
el valor es unidad monetaria igual que la comision. esta ultima es la que tengo que calcular en base a dos campos, uno es la unidad a la cual pertenece el examen y la otra es la prevision o tipo de convenio. y para complicarlo mas si es unidad ecotomografia es 70%, en general. pero si es prevision convenio solo la ecotomografia mamaria la comision sera de 9000 y si es ecografia abdominal la comision sera de 10000.
no se si me explique bien.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta Compleja con Case o IF

Publicado por Leopoldo Taylhardat (43 intervenciones) el 25/05/2015 17:41:37
Saludos...

Es mejor crear una tabla de la asociación de las dos tablas...
EXAMEN UNIDAD-PREVISION

y asocias el valor que desees de comisión... esto tambien te sirve para cambiar valores en caso de ser necesario desde la aplicación en caso de que suceda cambio del valor de la comisión y no tienes que hacer el cambio en lña base de datos...

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta Compleja con Case o IF

Publicado por Patricio (14 intervenciones) el 25/05/2015 18:09:55
Buena idea a futuro, pero tengo que resolver este problema ahora con esta tabla donde esta toda la informacion desde que se hizo este sistema.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar