Bases de Datos - Consulta a base de datos

 
Vista:
sin imagen de perfil

Consulta a base de datos

Publicado por oscar (3 intervenciones) el 19/03/2014 21:42:26
Hola buenas noches, os comento, llevo mas de un mes intentando realizar una consulta a la base de datos en la que con estas tres tablas sacar los resultados deseados.

tbl_local
id_local
str_nombrelocal

tbl_zona
id_zona
str_nombrezona

tbl_actividad
id_actividad
str_descripcion

el tema es relacionar las tres tablas, es decir, tener en la pagina dos listas/menu una que saque las distintas actividades y la otra las zonas, y que aparezcan por pantalla los resultados, teniendo en cuenta que hay locales que pueden realizar diferentes actividades, es para una web tipo a esas de publicidad de locales para buscar sitios para comer, cenar etc.. gracias..

he consultado en multitud de foros y ninguno me ayuda o bien porque no quieren o porque presuponen que todos tenemos que saber tanto como ellos, yo se realizar consultas sencillas, no se aplicar los inner join que es con lo que creo que se hace esta consulta, en resumen, soy bastante nuevo en este tema, he realizado un par de web para restaurantes y poco a poco voy aprendiendo, sin mas, gracias a todos de antemano, y disculpad si alguien se molesta, un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 93
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta a base de datos

Publicado por xve (107 intervenciones) el 20/03/2014 08:09:00
Hola Oscar, estoy viendo la estructura que nos muestras de la tablas, pero ahi falta el campo vinculante, que vincule dichas tablas, no?

Como se un local a que zona o actividad pertenece?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta a base de datos

Publicado por oscar (3 intervenciones) el 20/03/2014 12:58:39
Hola buenas, supongo que si, en la tbllocal he puesto el campo id_zona pero no el id_actividad porque no se como asociar varias actividades a un mismo local, por otro foro me comentaron decrear una tabla mas, pongo la estructura que me dijeron que tenia que ser...

tblactividad
id_Actividad
str_Descripcion

tblzona
id_Zona
str_Nombre

tbllocal
id_Local
str_Nombre_Local
id_Zona

tblRelLocalActividad
id_RelLocalActividad
id_Actividad
id_Local

esta ultima para relacionar actividades y locales, y el codigo que me puso es el siguiente..

SELEC l.str_Nombre_Local,
z.str_Nombre
FROM (tbllocal l INNER JOIN tblzona z
ON l.id_Zona=z.id_Zona)
INNER JOIN tblRelLocalActividad r
ON l.id_Local=r.id_Local
WHERE z.id_Zona=X
AND r.id_Actividad=Y;

Esto dará los bares de la zona X que realizen la actividad Y.
Modificando la clausula WHERE puedes hacer lo que quieras....
Puedes agregar otro JOIN con tblactividad si necesitas usar el nombre de la actividad.


lo que pasa es que tampoco entiendo muy bien lo que significan esas I, z, X, Y.... porque he tratado de poner todo esto y me da error el juego de registros, y le volvi a preguntar a quien me puso todo esto y me dijo que ya me habia solucionado bastante, que estudiara o que no intentara hacer cosas que superan mis conocimientos ...
yo utilizo dreamweaver y hasta ahora solo he aprendido a hacer consultas usando la variable where...
gracias por tu atencion, un saludo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 93
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta a base de datos

Publicado por xve (107 intervenciones) el 20/03/2014 15:32:59
Hola Oscar, te han aconsejado bien, una tabla vinculantes es lo suyo...

Lo de la l, z y r, son alias de las tablas... de esta manera, no tienes que ir escribiendo todo el rato el nombre de la tabla.

La X y la Y, hacen referencia al id de la zona y el id de la actividad que quieres mostrar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta a base de datos

Publicado por oscar (3 intervenciones) el 20/03/2014 16:10:50
Buenas, he realizado varias pruebas sustituyendo las abreviaturas y el codigo me ha quedado tal que asi:

SELECT tbllocal.strNombre_Local, tblzona.strNombre
FROM (tbllocal INNER JOIN tblzona ON tbllocal.idZona=tblzona.idZona) INNER JOIN tblrelactividadlocal ON tbllocal.idLocal=tblrelactividadlocal.idLocal
WHERE tblzona.idZona=X AND tblrelactividadlocal.idActividad=Y

me da dos registros:

Juego de registros (Recordset1)
strNombre_Local
strNombre

al hacer una vista previa me sale la pantalla en blanco con este mensaje : Unknown column 'X' in 'where clause'
que datos tengo que poner en vez de x e y porque al cambiarlos, ponga lo que ponga me da el mismo error cambiando la x por lo que puse.
gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta a base de datos

Publicado por Andres (2 intervenciones) el 20/04/2014 01:04:32
Hola Oscar,

Voy a utilizar el mismo código que envías y luego ese código SQL utilizando los alias para que puedas entender la diferencia y la utilidad del mismo.

SELECT tbllocal.strNombre_Local, tblzona.strNombre
FROM tbllocal
INNER JOIN tblzona ON tbllocal.idZona = tblzona.idZona
INNER JOIN tblrelactividadlocal ON tbllocal.idLocal =tblrelactividadlocal.idLocal
WHERE tblzona.idZona = X AND tblrelactividadlocal.idActividad = Y

Código SQL usando alias:

SELECT l.strNombre_Local, z.strNombre
FROM tbllocal l
INNER JOIN tblzona z ON l.idZona = z.idZona
INNER JOIN tblrelactividadlocal rl ON l.idLocal = rl.idLocal
WHERE z.idZona = X
AND rl.idActividad = Y

En cuanto a la cláusula WHERE simplemente te está mostrando el error "Unknown column 'X' in 'where clause' porque debes reemplazar la X por un valor de idzona que tengas en tu tabla tblzona. Por ejemplo, si en la tabla tblzona tienes un idzona 4 entonces reemplaza la X por un 4. Un ejemplo:

SELECT l.strNombre_Local, z.strNombre
FROM tbllocal l
INNER JOIN tblzona z ON l.idZona = z.idZona
INNER JOIN tblrelactividadlocal rl ON l.idLocal = rl.idLocal
WHERE z.idZona = 4
AND rl.idActividad = Y (reemplaza Y por un valor de idactividad que tengas en tu tabla tblrelactividadlocal)

Espero sea lo suficientemente claro. Ya con esto deberías poder resolver tu consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar