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

[SOLUCIONADO] Busqueda en tablas relacionadas

Estas en el tema de Busqueda en tablas relacionadas en el foro de Mysql en Foros del Web. Hola! Imaginad que tengo una tabla X con una columna llamada TIPO que me guarda un valor entero, que corresponde a la ID de una ...
  #1 (permalink)  
Antiguo 29/10/2014, 12:15
 
Fecha de Ingreso: abril-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 0
Busqueda en tablas relacionadas

Hola!

Imaginad que tengo una tabla X con una columna llamada TIPO que me guarda un valor entero, que corresponde a la ID de una fila de otra tabla Y donde contengo toda la información sobre ese tipo (nombre, fecha, etc)

Yo quiero hacer una busqueda MATCH (nombre,descripcion,tipo) AGAINST (:search IN BOOLEAN MODE) pero claro, que me lo busque comparando :search con el nombre que le corresponde a la 'id' que guardo en TIPO

¿Como puedo hacer esto? No sé si me he explicado con claridad

Gracias de antemano!
  #2 (permalink)  
Antiguo 30/10/2014, 02:35
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 6 meses
Puntos: 14
Respuesta: Busqueda en tablas relacionadas

Puedes relacionar ambas tablas usando INNER JOIN. De todas formas, si pusieras la estructura de las dos tablas seguro que sería más fácil echarte una mano en tu problema concreto.
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #3 (permalink)  
Antiguo 30/10/2014, 04:04
 
Fecha de Ingreso: abril-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Busqueda en tablas relacionadas

Hola! Gracias por la respuesta, he estado leyendo sobre el tema y creo que ya mas o menos lo tengo.
Mi consulta tiene la siguiente pinta:
Código SQL:
Ver original
  1. SELECT t.id, t.name, p.id, TYPE FROM property p JOIN TYPE t ON TYPE = t.id
  2. WHERE t.name LIKE '%$search%'

(he usado LIKE pero con MATCH AGAINST se haría igual)

Funciona perfecto, como yo quería, pero ahora me surje otro problema...
Al imprimir datos con php, $row["id"] me representa 'p.id' ¿qué hago si quiero imprimir 't.id'?
$row["t.id"] no imprime nada.

Estoy buscando solución a esto y no encuentro nada, en parte porque no sé como buscarlo XD

Gracias y un saludo

Última edición por gnzsoloyo; 30/10/2014 a las 05:34 Razón: Código de programacion NO PEMITIDO EN FOROS DE BB.DD.
  #4 (permalink)  
Antiguo 30/10/2014, 05:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Busqueda en tablas relacionadas

Cita:
(he usado LIKE pero con MATCH AGAINST se haría igual)
Eso no es correcto.
LIKE compara cadenas en base a un patron dado, con lo que puede comparar incluso fragmentos de ellas, sin importar la longitud del patrón a buscar.
MATCH() ... AGAINST() compara palabras completas contra índices FULLTEXT, donde la palabra debe tener una longitud mínima (usualmente confiogurada en 5 caracteres).
El primero devuelve cualquier cosa que encuentre que cumpla la condición. El segundo caso devuelve datos en función de un cálculo estadístico de relevancia para la condición buscada.
Son universos algo distintos.
En el contexto de lo que pàreces describir, cualquiera de las dos opciones puede traerte resultados, porque el "ID" mencionado no es parte de la condición de búsqueda. Pero si realizas el JOIN como te lo plantearon podría haber resultados. Lo que si te sugiero es que tengas cuidado con el uso de palabras reservadas en nombres de tablas, campos u otroso objetos de base, porque pueden causar resultados erróneos o errores de sintaxis indetectables. "TYPE" es una de esas.

Nota: Lee las normas del foro, por favor. No se permiten ni códigos no SQL en los foros de BBDD, ni se tratan temas de programación.
Para temas de PHP está el foro de PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 30/10/2014, 06:11
 
Fecha de Ingreso: abril-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Busqueda en tablas relacionadas

Gracias por la explicación y por la corrección!

Según leí en un manual, recomendaban usar LIKE si la cadena contenía tan solo una palabra, y MATCH AGAINST para cadenas de varias palabras... y eso es lo que hago dependiendo de cada caso uso uno u otro y el resultado es bastante bueno, aunque en el fondo no entienda del todo como funciona cada una. Mucho por aprender.

Un saludo!

Etiquetas: busqueda, relacionadas, tabla, tablas
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 01:29.