Ver Mensaje Individual
  #7 (permalink)  
Antiguo 21/07/2011, 08:05
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Búsqueda match against en diferentes tablas a la vez

Por un lado, tienes que recordar que el uso de la coma como sinónimo de JOIN tiene a producir productos cartesianos cuando los campos relacionados de las diferentes tablas no tienen el mismo nombre en todas. Esto significa que si el ID del hotel se llama ID en una tabla e id_hotel en otra, esto generará errores de JOIN, porque la coma intenta emparejar los valores de campos con el mismo nombre.
¿Se entiende?
En estos casos es recomendable usar INNER|LEFT|RIGHT JOIN... ON..., para determinar qué campos de qué tabla se relacionan con qué otro campo de la otra tabla. Hace las consultas más largas de escribir, pero también mucho más precisas.

Por otro lado, si lo que quieres son los datos del hotel, no se entiende para qué quieres hacer un JOIN con las otras tablas.
Al leer sólo las columnas correspondientes a la tabla Hotel, es imposible saber si la repetición de datos es real y afecta a todo el registro, o sólo se está dando en esas columnas, ya que un JOIN entre tablas devolverá datos de todas, y en el resto puede haber variaciones, caso en el que la repetición sólo nos indicaría que hay una relación N:1 entre Hoteles y el resto. Pero no sería un "error", sino que estás definiendo mal el conjunto de columnas que necesitas.

¿Qué es lo que realmente quieres obtener? ¿Los datos del Hotel, o los datos del hotel según una relación dada?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)