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

consulta de busquedad mysql

Estas en el tema de consulta de busquedad mysql en el foro de Mysql en Foros del Web. hola, mi pregunta es la siguiente, tnego la siguiente consulta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT a.Name , b.Email , c.Role FROM people a ...
  #1 (permalink)  
Antiguo 31/01/2012, 07:58
Avatar de shake2427  
Fecha de Ingreso: julio-2011
Mensajes: 116
Antigüedad: 12 años, 9 meses
Puntos: 3
consulta de busquedad mysql

hola,

mi pregunta es la siguiente, tnego la siguiente consulta

Código MySQL:
Ver original
  1. SELECT a.Name,b.Email,c.Role FROM people a
  2.     INNER JOIN Users b ON b.UsersID=a.UsersID
  3.     INNER JOIN user_roles c ON c.UsersID=b.UsersID

esta me muestra todos los datos en este caso estos

nombre-------email-----------------role
jorge |[email protected] | administrador
usuario1 |[email protected] | usuario
usuario2 |[email protected] | usuario
andres |[email protected] | administrador

ahora solo quiero mostrar los administradores

Código MySQL:
Ver original
  1. SELECT a.Name,b.Email,c.Role FROM people a
  2.     INNER JOIN Users b ON b.UsersID=a.UsersID
  3.     INNER JOIN user_roles c ON c.UsersID=b.UsersID
  4.         WHERE Role='Administrador'

y me muestra los siguiente:
nombre-------email--------------------role
jorge |[email protected] | administrador
andres |[email protected] | administrador

pero si hago la siguiente consulta

Código MySQL:
Ver original
  1. SELECT a.peopleID,a.Name,a.MiddleName,a.Lastname,a.sex,a.birthday,b.email,b.IsActive,d.Role FROM people a
  2.     INNER JOIN users b ON b.UsersID=a.UsersID
  3.     INNER JOIN Status c ON c.status=b.IsActive
  4.     INNER JOIN user_Roles d ON d.UsersID=b.UsersID
  5.     WHERE d.Role='Administrador'
  6.     OR     a.Name LIKE '%usu%'
  7.     OR    a.MiddleName LIKE '%usu%'
  8.     OR    a.LastName LIKE  '%usu%'
  9.     OR    b.Email LIKE '%usu%'
  10.     ORDER BY c.Order ASC ,a.Name

y me muestra lo siguiente:

nombre-------email-------------role
jorge |[email protected] | administrador
usuario1 |[email protected] | usuario
usuario2 |[email protected] | usuario
andres |[email protected] | administrador

como hago para que me muestre solo los administradores que cumplan con esas condiciones de busqueda?, para que no me los muestre todos.

gracias de antemano
  #2 (permalink)  
Antiguo 31/01/2012, 08:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: consulta de busquedad mysql

Código MySQL:
Ver original
  1. SELECT a.peopleID,a.Name,a.MiddleName,a.Lastname,a.sex,a.birthday,b.email,b.IsActive,d.Role FROM people a
  2.     INNER JOIN users b ON b.UsersID=a.UsersID
  3.     INNER JOIN Status c ON c.status=b.IsActive
  4.     INNER JOIN user_Roles d ON d.UsersID=b.UsersID
  5.     WHERE d.Role='Administrador'
  6.     AND    ( a.Name LIKE '%usu%'
  7.     OR    a.MiddleName LIKE '%usu%'
  8.     OR    a.LastName LIKE  '%usu%'
  9.     OR    b.Email LIKE '%usu%')
  10.     ORDER BY c.ORDER ASC ,a.Name

casi lo tenias!!!

Analiza lo que buscas :

que sea administrador y que cumpla una de las otras condiciones.... luego no pongas que sea administrador o que cumpla una de las otras.... no?

Los parentesis son relevantes por la prelación de operadores logicos.... recuerdas por que 2*3+5<>2*(3+5)?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 31/01/2012 a las 08:27
  #3 (permalink)  
Antiguo 31/01/2012, 08:42
Avatar de shake2427  
Fecha de Ingreso: julio-2011
Mensajes: 116
Antigüedad: 12 años, 9 meses
Puntos: 3
Respuesta: consulta de busquedad mysql

Cita:
Iniciado por quimfv Ver Mensaje
Código MySQL:
Ver original
  1. SELECT a.peopleID,a.Name,a.MiddleName,a.Lastname,a.sex,a.birthday,b.email,b.IsActive,d.Role FROM people a
  2.     INNER JOIN users b ON b.UsersID=a.UsersID
  3.     INNER JOIN Status c ON c.status=b.IsActive
  4.     INNER JOIN user_Roles d ON d.UsersID=b.UsersID
  5.     WHERE d.Role='Administrador'
  6.     AND    ( a.Name LIKE '%usu%'
  7.     OR    a.MiddleName LIKE '%usu%'
  8.     OR    a.LastName LIKE  '%usu%'
  9.     OR    b.Email LIKE '%usu%')
  10.     ORDER BY c.ORDER ASC ,a.Name

casi lo tenias!!!

Analiza lo que buscas :

que sea administrador y que cumpla una de las otras condiciones.... luego no pongas que sea administrador o que cumpla una de las otras.... no?

Los parentesis son relevantes por la prelación de operadores logicos.... recuerdas por que 2*3+5<>2*(3+5)?




muchas gracias era lo que necesitaba.
si me imaginada que era eso, pero no sabia como resolverlo,lo intente de varias formas,pero nada. gracias

Etiquetas: join, select
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 19:02.