Comunidad de diseño web y desarrollo en internet online

Consultar varias tablas de una vez con mysql

Citar            
MensajeEscrito el 27 Ago 2015 03:53 am
Buenas Noches:

Estoy desarrollando una app para una agencia de viajes y me encontré con los siguientes requerimientos la inmobiliaria maneja inmuebles, hoteles, paquetes

con lo cual genere las siguientes 3 tablas
Inmobiliaria (id_inmueble,id_tipo,país,provincia,ciudad, calle, num_calle, superficie, etc)

Hoteles (id_hotel,id_tipo,país,provincia,ciudad, calle, num_calle, nombre,categoría, etc)

Paquetes (id_paquete,id_tipo,país,provincia,ciudad, id_hotel, duración, aéreo, etc)

el problema me surge cuando debo realizar una búsqueda por (ubicación), ej Argentina,Misiones,Posadas la consulta debe devolver todos los registros que contengan ese valor en los campos país,provincia,ciudad de cada tabla. Devolver N cantidad de registros para mostrar un listado.

Una vez conseguido eso por algún lenguaje del lado del servidor ejemplo PHP realizo después la consulta puntual tomando como referencia el valor id_tipo para saber en que tabla seguir profundizando la consulta.

Por favor espero que me puedan ayudar, esto me tiene trabado y me trae a mal dormir ya desde hace días :(

Gracias! :)

Por germoargentina

5 de clabLevel



 

Argentina

chrome
Citar            
MensajeEscrito el 27 Ago 2015 12:32 pm
Como has distribuido las entidades, no puedes hacerlo en una sola consulta.

Por DriverOp

Claber

2510 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Ago 2015 12:54 pm

DriverOp escribió:

Como has distribuido las entidades, no puedes hacerlo en una sola consulta.


Gracias DriverOp por la rápida respuesta. Ayer después de leer varias artículos del foro se me ocurrió crear una tabla principal llamada Productos donde en esa tabla contenga los siguientes campos que son los que se muestran en el listado y por los cuales después se pueden realizar filtros

productos --> id_producto, id_tipo_producto ( guardaría el id la tabla a la cual corresponda el producto Ej: id_inmueble), cat_tipo_producto (guardaría integer: 1-->si es inmueble, 2-->hotel, 3-->paquete.),pais,provincia, etc). y ahí realizar la consulta sql : "SELECT id_producto, id_tipo_producto,cat_tipo_producto, etc FROM productos WHERE pais = $variable1 AND provincia = $variable2;"

y después cuando quiero profundizar la búsqueda por php decido si correr consulta en inmueble, hotel o paquete.

Es correcto mi razonamiento? y la pregunta mas difícil... Es optimo?

Ansioso por recibir mas opiniones y ayuda.

Saludos y Gracias :)

Por germoargentina

5 de clabLevel



 

Argentina

chrome
Citar            
MensajeEscrito el 28 Ago 2015 12:14 pm
En análisis de sistema, existe un tema que se llama "normalización de base de datos". Lo que acabas de descubrir es lo que se llama la "segunda forma normal".

La segunda forma normal indica que los datos de las entidades no deben duplicarse en la base de datos. Lo que tú tenías duplicado (triplicado en realidad) es la entidad. Así que sí, es la mejor idea tener una tabla que identifique qué tipo de producto es y todos los campos en común a todos ellos. Luego deberías poner los datos variables en tablas separadas.

Esto es óptimo. Con en tiempo de uso verás las ventajas.

Por DriverOp

Claber

2510 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.