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

Consulta con subconsulta, ayuda!

Estas en el tema de Consulta con subconsulta, ayuda! en el foro de Mysql en Foros del Web. Hola a todos, llevo mas de dos dias tratando de solucionar esto, me esta enloqueciendo!! La idea es: tengo una tabla con rubros y una ...
  #1 (permalink)  
Antiguo 15/05/2009, 02:23
Avatar de nando1209  
Fecha de Ingreso: enero-2009
Mensajes: 15
Antigüedad: 15 años, 2 meses
Puntos: 0
Consulta con subconsulta, ayuda!

Hola a todos,
llevo mas de dos dias tratando de solucionar esto, me esta enloqueciendo!!

La idea es:
tengo una tabla con rubros y una tabla con empresas.
Un buscador en el que uno puede ingresar algun dato del rubro (fotografia, o photo o retrato, etc..) y tambien la zona en la que desea buscar proveedor para ese servicio.

La consulta que busco crear es que seleccione todos los proveedores (empresas) que esten en esa zona (empresas.localidad_id) que cumplan con la condicion de estar el texto buscado dentro de su rubro.

Para la tabla rubro, cree 4 campos, rubros_id, rubros_esp(para espanol), rubros_eng(para ingles), y rubros.keys(para palabras generales relativas al rubro)

De mas esta decir que soy novato en esto!!
Help!!!

Hasta aqui mi consulta numero 4000 con errores:

$query="SELECT * FROM empresa WHERE
empresa.localidad_id = '$zona'
AND empresa.rubro_id = (
SELECT rubro_id from rubros WHERE
rubros.rubro_esp like '%$rubro%' || rubros.rubro_eng like '%$rubro%' || rubros.rubro_keys like '%$rubro%'
AND empresa.rubro_id = rubros.rubro_id
group by empresa.rubro_id )";

Gracias a quien pueda ayudarme!!
  #2 (permalink)  
Antiguo 15/05/2009, 07:13
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Consulta con subconsulta, ayuda!

Hola prueba algo asi:

Código:
SELECT * FROM empresa e JOIN rubro r ON e.rubro_id = r.rubro_id 

WHERE r.rubro_esp like '%$rubro%' || r.rubro_eng like '%$rubro%' || r.rubro_keys like '%$rubro%'

AND e.localidad_id = '$zona'
Si incluyes la estructura de la tabla empresa mejor.

Saludos
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 15/05/2009, 09:45
Avatar de nando1209  
Fecha de Ingreso: enero-2009
Mensajes: 15
Antigüedad: 15 años, 2 meses
Puntos: 0
Gracias Cala por tu respuesta!

Prove lo que me mandaste y no funciono.
Para la prueba, tengo ingresado 3 registros, 2 en una localidad y uno en otra.
Al hacer la consulta me devuelve uno de cada una.

Te cuento la estructura de la tabla empresa:
empresa.nombre
empresa.localidad_id
empresa.webpage
empresa.tel
empresa.propietario

Gracias por la ayuda!

Saludos

Cala,
estuve probando y si funciona!!
Filtra bien por rubro y zona, solo que toma solo el campo rubro_keys para la evaluacion y no los dos anteriores (rubro_esp y rubro_eng), los 2 primeros de los que tienen el OR.

Si pongo cualquier texto de esos dos campos no los reconoce.

Resumiendo, tengo estas opciones:
Opcion A) tratar de arreglar estos OR's
Opcion B) incluir los titulos de los campos dentro de rubro_key y buscar solo en uno...

Me gustaria la A pero tomo la B!

Gracias miles!!!!!!! :)
DOS DIAS hacia que estaba con esto!!!!

Estimado Cala,
encontre mi problema.

El porque me filtraba solo rubro.keys es porque el AND estaba filtrando solo el ultimo OR.

le puse parentesis despues del WHERE y antes del AND y el filtrado por localidad funciono para todos los OR

Quedaria asi:

SELECT * FROM empresa e JOIN rubro r ON e.rubro_id = r.rubro_id
WHERE ( r.rubro_esp like '%$rubro%' || r.rubro_eng like '%$rubro%' || r.rubro_keys like '%$rubro%' )
AND e.localidad_id = '$zona'

Gracias de nuevo! hubiese sido imposible sin tu ayuda!!!!!

Última edición por GatorV; 16/05/2009 a las 20:30
  #4 (permalink)  
Antiguo 17/05/2009, 20:16
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Consulta con subconsulta, ayuda!

nando1209 me alegra que te haya servido la ayuda y hayas podido resolver el problema.
Saludos
__________________
->Aprender es un proceso que incluye el error..
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 10:41.