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

Pregunta sobre consulta de varias tablas

Estas en el tema de Pregunta sobre consulta de varias tablas en el foro de Bases de Datos General en Foros del Web. Estoy tratando de hacer una consulta de una búsqueda a varias tablas que me devuelva el numero de tiendas que estén habilitadas y las que ...
  #1 (permalink)  
Antiguo 03/07/2009, 13:03
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 6 meses
Puntos: 281
Pregunta sobre consulta de varias tablas

Estoy tratando de hacer una consulta de una búsqueda a varias tablas que me devuelva el numero de tiendas que estén habilitadas y las que concuerdan con la búsqueda, pero no me funciona. Me explico:

Quiero buscar en tres tablas: País, Estado y Tienda. Lo único que quiero saber de País y Estado es si están habilitados. No quiero que la consulta me devuelva las tiendas donde los países no estén habilitados. También quiero saber si la tienda en misma está habilitada y que el nombre de la tienda concuerde con la búsqueda. Osea, estos son los criterios:
Código:
pais.habilitado=1
estado.habilitado=1
tienda.habilitado=1
tienda.nombre='%$valor_de_busqueda%'
he compuesto esta consulta usando PHPMyAdmin pero no me funciona y no se porque:

Código sql:
Ver original
  1. SELECT tiendas.id_tiendas, tiendas.direccion_tiendas, tiendas.telefono_tiendas, tiendas.imagen_tiendas, tiendas.fecha_tiendas, tiendas.activo_tiendas, paises.nombre_paises
  2. FROM tiendas, estados, paises
  3. WHERE ((estados.activo_estados = 1) AND (paises.activo_paises = 1) AND (tiendas.activo_tiendas = 1) AND (paises.nombre_paises LIKE '%busqueda%'))

No me da ningún error pero no me funciona, y no se que estoy haciendo mal. Agradecería cualquier sugerencia.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #2 (permalink)  
Antiguo 03/07/2009, 15:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Pregunta sobre consulta de varias tablas

No funciona por que no estas estableciendo los campos con los que se unen las tablas.
Cual es el campo en comun de las 3 tablas?
el estado tiene el codigo del pais? las tiendas tienen el codigo del estado?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 03/07/2009, 15:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Pregunta sobre consulta de varias tablas

Asumiendo la estructura de tus tablas, debería quedar algo así:

Código sql:
Ver original
  1. SELECT tiendas.id_tiendas, tiendas.direccion_tiendas, tiendas.telefono_tiendas, tiendas.imagen_tiendas, tiendas.fecha_tiendas, tiendas.activo_tiendas, paises.nombre_paises
  2. FROM tiendas INNER JOIN estados ON tiendas.id_estado=estado.id_estado
  3. INNER JOIN paises ON estados.id_pais=pais.id_pais
  4. WHERE ((estados.activo_estados = 1) AND (paises.activo_paises = 1) AND (tiendas.activo_tiendas = 1) AND (paises.nombre_paises LIKE '%busqueda%'))

Nos cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 04/07/2009, 01:19
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Pregunta sobre consulta de varias tablas

¿qué tal Juaniquillo?
creo que la propuesta de huesos52 (hola, huesos52) es la correcta (la he cortado y pegado de la suya, salvo con algún cambio de nombre de campo y tabla), y si quieres ver el total, tendrías que usar un count, algo así.

Código sql:
Ver original
  1. SELECT COUNT(tienda.id_tienda)TOTALTIENDAS FROM tienda INNER JOIN estado ON tienda.id_estado=estado.id_estado
  2. INNER JOIN pais ON estado.id_pais=pais.id_pais
  3. WHERE ((estado.habilitado= 1) AND (pais.habilitado= 1) AND (tienda.habilitado= 1) AND (tienda.nombre LIKE '%busqueda%'))

Al no agrupar por nada, te saldría el total de tiendas con ese nombre en todos los países (país activo, estado activo y tienda activa).

No sé si estos serán los nombres de los campos.

Última edición por jurena; 04/07/2009 a las 09:29
  #5 (permalink)  
Antiguo 06/07/2009, 06:45
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 6 meses
Puntos: 281
Respuesta: Pregunta sobre consulta de varias tablas

Gracias chicos, yo no se porque creía que iba a salirme con la mía sin usar el 'INNER JOIN'... No me acordaba que, si no es así, no hay forma de relacionar records de diferentes tablas...

Muchas gracias a ambos. Lo prueba y les dejo saber. Saludos
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #6 (permalink)  
Antiguo 06/07/2009, 07:03
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 6 meses
Puntos: 281
Respuesta: Pregunta sobre consulta de varias tablas

Pues está de más decirles que funcionó perfectamente, jejeje. Muchas gracias de nuevo.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
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 15:32.