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

ayuda en consulta sql

Estas en el tema de ayuda en consulta sql en el foro de Mysql en Foros del Web. Hola esto desarrollando un sistema para mi escuela , el cual tengo un problema en un buscador , al buscar una frase en varios campos ...
  #1 (permalink)  
Antiguo 16/09/2009, 16:37
Avatar de duskrow  
Fecha de Ingreso: abril-2008
Mensajes: 267
Antigüedad: 16 años
Puntos: 8
ayuda en consulta sql

Hola esto desarrollando un sistema para mi escuela , el cual tengo un problema en un buscador , al buscar una frase en varios campos de la tabla me arroja resultados iguales , el cual quiero evitar que arroje resultados iguales , eh tratado con DISTINCT pero no me funciona , les pongo mi sentencia aver si me pueden decir en que estoy mal, gracias

Código PHP:

 SELECT DISTINCT
VALUES 
(
a1.id ida1.titulo tituloa1.urla1.descripciona2.categoria
)
FROM tramites_y_servicios a1categoria_tramites a2
WHERE a1
.titulo LIKE '%CIVIL%'
OR a1.url LIKE '%CIVIL%'
OR a1.descripcion LIKE '%CIVIL%'
OR a1.quien LIKE '%CIVIL%'
OR a1.recibe LIKE '%CIVIL%'
OR a1.requisitos LIKE '%CIVIL%'
OR a1.cuanto_tarda LIKE '%CIVIL%'
OR a1.vigencia LIKE '%CIVIL%'
OR a1.cuanto_cuesta LIKE '%CIVIL%'
OR a1.donde LIKE '%CIVIL%'
OR a1.observaciones LIKE '%CIVIL%'
OR a2.categoria LIKE '%CIVIL%'
LIMIT 0 30 

esa sentencia me arroja muchisimos resultados iguales :(
  #2 (permalink)  
Antiguo 17/09/2009, 02:52
 
Fecha de Ingreso: enero-2009
Ubicación: Mexico
Mensajes: 99
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: ayuda en consulta sql

Yo creo que tu forma de hacer JOIN esta mal. Segun tu consulta "tramites_y_servicios" y "categoria_tramites" son tablas vinculadas (por una llave foranea natural) ¿Es así?. O ¿son tablas totalmente diferentes?.
  #3 (permalink)  
Antiguo 17/09/2009, 07:59
 
Fecha de Ingreso: abril-2008
Ubicación: Rancagua, Chile
Mensajes: 41
Antigüedad: 16 años
Puntos: 0
Respuesta: ayuda en consulta sql

Me parece que te falta igualar la PK de una tabla con la FK de la otra (de las tablas tramites_y_servicios a1 y categoria_tramites a2), haz eso y nos informas como te fue, saludos...
  #4 (permalink)  
Antiguo 17/09/2009, 08:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ayuda en consulta sql

1) como te dicen codecweb98 y Rro_237, tu forma de hacer el join no es la apropiada. Estás haciendo un cruce de todos los datos con todos los datos de las dos tablas. Tienes que relacionarlas.
SELECT a1.id id, a1.titulo titulo, a1.url, a1.descripcion, a2.categoria
FROM tramites_y_servicios a1 INNER JOIN categoria_tramites a2 ON a1.campo1 = a2.campo2
WHERE a1.titulo LIKE '%CIVIL%'
OR a1.url LIKE '%CIVIL%'
OR a1.descripcion LIKE '%CIVIL%'
OR a1.quien LIKE '%CIVIL%'
OR a1.recibe LIKE '%CIVIL%'
OR a1.requisitos LIKE '%CIVIL%'
OR a1.cuanto_tarda LIKE '%CIVIL%'
OR a1.vigencia LIKE '%CIVIL%'
OR a1.cuanto_cuesta LIKE '%CIVIL%'
OR a1.donde LIKE '%CIVIL%'
OR a1.observaciones LIKE '%CIVIL%'
OR a2.categoria LIKE '%CIVIL%'
LIMIT 0 , 30

2) Luego está el problema de los resultados iguales. ¿Qué campo es el que no quieres ver repetido? y ¿qué otros datos de las tablas tienes que traerte? Vayamos paso por paso, pero primero dinos cuál es el campo por el que se relacionan las tablas, es decir, la primary key y la foreign key.
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 14:03.