MySQL - CONSULTA SQL CON IF(SUM)

   
Vista:
Imágen de perfil de leidy Johana

CONSULTA SQL CON IF(SUM)

Publicado por leidy Johana (9 intervenciones) el 03/09/2016 20:02:47
Buenas tardes colegas:

Espero esten muy bien, presento la siguiente inquietud:

No entiendo la siguiente consulta(que significa e IF(SUM ) y el AS?)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function validarPermiso ($usuario_id = 0,$recurso_id=0){
 
        $sql = '
               /* VALIDO LAS ACCIONES DE UN USUARIO SOBRE UN RECURSO DEL SISTEMA */
               SELECT IF(SUM(consultar) >= 1, 1,0) as consultar,
                       IF(SUM(agregar) >= 1, 1,0) as agregar,
                       IF(SUM(editar) >= 1, 1,0) as editar,
                       IF(SUM(eliminar) >= 1, 1,0) as eliminar
                FROM perfiles_recursos
                WHERE recurso_id = '.(int)$recurso_id.'
                AND perfil_id IN (
                    /* SELECCIONO LOS PERFILES DEL USUARIO*/
                    SELECT perfil_id
                    FROM usuarios_perfiles
                    WHERE usuario_id = '.(int)$usuario_id.'
                )
                GROUP BY recurso_id';
 
        $this->query($sql);
        return  $this->obtenerObjeto();
 
    }
 
}


ALGUIEN PODRIA EXPLICARME ESTE CODIGO?
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
Imágen de perfil de xve

CONSULTA SQL CON IF(SUM)

Publicado por xve (1015 intervenciones) el 04/09/2016 08:42:11
Hola Leidy, es un condicional... intento explicarte... por ejemplo:

1
IF(SUM(consultar) >= 1, 1,0) as consultar

Mira si la suma del campo consultar es mayor o igual a 1, asigna (as) a la variable consultar el valor 1. En caso de que sea inferior a 1, le asignara el valor 0.

sum() suma los valores de un campo numérico.

Espero haberme sabido explicar...
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
Imágen de perfil de leidy Johana

CONSULTA SQL CON IF(SUM)

Publicado por leidy Johana (9 intervenciones) el 05/09/2016 07:48:54
Dios te bendiga, claro que si!!!, me hes muy útil tu respuesta.

Podrías decirme si el código escrito es correcto?

Es para emplearlo en validación de permisos de usuario :D

De antemano agradecimientos.
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
Imágen de perfil de xve

CONSULTA SQL CON IF(SUM)

Publicado por xve (1015 intervenciones) el 05/09/2016 08:52:51
Hola Leidy, lo único que yo no te aconsejaría seria la utilización de la clausula IN() ya que depende de lo que haya entre el paréntesis (En tu caso una consulta) si devuelve muchos valores, la consulta se eterniza, ya que no deja de ser un montón de OR. Muchas veces puede ser mas aconsejable un segundo select.

Por lo demás, lo veo bien!!
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
Imágen de perfil de Leidy Johana Contreras

CONSULTA SQL CON IF(SUM)

Publicado por Leidy Johana Contreras (9 intervenciones) el 05/09/2016 15:20:57
Hola, muchas gracias:

Pero podrías hacer un ejemplo con lo que dices para tener una mejor comprensión?

Se hacer consultas básicas con inner join.

Espero tu respuesta :D
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
Imágen de perfil de Leidy Johana Contreras

CONSULTA SQL CON IF(SUM)

Publicado por Leidy Johana Contreras (9 intervenciones) el 05/09/2016 15:44:43
Hola, me urge otra inquietud.

Como puedo modificar el código para ponerlo en una clase JAVA llamada Permiso?

De esta forma estaria bien?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public String validarPermiso(int usuario_id,int recurso_id){
 
    String sql="Select if(sum(consultar) >= 1, 1,0) as consultar,"
            + "if(sum(agregar) >= 1, 1,0) as agregar,"
            + "if(sum(editar) >= 1, 1,0) as editar,"
            + "if(sum(eliminar) >= 1, 1,0) as eliminar"
            + "from recursos_perfil "
            + "where recurso_perfil_id_recurso="+recurso_id+""
            + "&& recurso_perfil_id_perfil in ("
            + "Select usuario_perfil_id_perfil"
            + "from usuario_perfil"
            + "where usuario_perfil_id_usuario="+usuario_id+")"
            + "group by recurso_perfil_id_recurso";
 
    return sql;
 
}

No tengo muy claro que debe retornar
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