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

duda con consulta de mysql para varias tablas

Estas en el tema de duda con consulta de mysql para varias tablas en el foro de Mysql en Foros del Web. Hola que no se como hacer la siguiente consulta tengo una base de datos y dentro de ella varias tablas y tengo que consultar ("saber") ...
  #1 (permalink)  
Antiguo 01/02/2012, 10:02
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
duda con consulta de mysql para varias tablas

Hola

que no se como hacer la siguiente consulta

tengo una base de datos y dentro de ella varias tablas

y tengo que consultar ("saber") el nombre del profesor que da clase de dibujo

estas son las tablas relacionadas

tabla "aulas"

aula 9
hora 12:00:00
asig dib(dibujo)

tabla "aulasyprofesores"

aula 9
dni_p 355

tabla "profesores"
dni_p 355
nom_p sandra

y no se como hacer una consulta multiple con estas tablas. alguien sabe como?

enga un saludo
  #2 (permalink)  
Antiguo 01/02/2012, 10:51
Avatar de jmacc  
Fecha de Ingreso: marzo-2007
Ubicación: Mexico
Mensajes: 94
Antigüedad: 17 años, 1 mes
Puntos: 6
Respuesta: duda con consulta de mysql para varias tablas

Bueno primero que nada te aconsejo que buscas sobre joins inner joins etc.
La manera mas simple de hacerlo seria de la siguiente forma.
Código MySQL:
Ver original
  1. aulas.hora as horas,
  2. profesores.nombreprofesor as Profesor
  3. from aulas inner join aulas profesores inner join profesores
  4. where aulasyprofesores.aula=aulas.aulas and
  5. profesores.dni_p=aulasprofesores.dni_p order by alguncampo

Lo principal para realizar la comparacion esta en el where. Espero te sirva
  #3 (permalink)  
Antiguo 01/02/2012, 11:24
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: duda con consulta de mysql para varias tablas

hola rufus:

Sólo un comentario con respecto al post de jmacc, cuando utilices cualquier JOIN (INNER, LEFT o RIGHT) utiliza siempre la cláusula ON para definir las relaciones entre las tablas. En la manera en que lo plantea jmacc sin especificar ON, se realiza primero un producto cartesiano entre las tablas antes de filtrarse.
El resultado puede ser el mismo, pero la consulta no es óptima.

Los criterios para unir las tablas SIEMPRE DEBEN IR EN LA CLÁUSULA ON, los criterios para filtrar la información las colocas en el WHERE. En tu caso la consulta debería quedar más o menos así:

Código MySQL:
Ver original
  1. aulas.hora as horas,
  2. profesores.nombreprofesor as Profesor
  3. FROM aulasyprofesores
  4. INNER JOIN aulas ON aulasyprofesores.aula = aulas.aula
  5. INNER JOIN profesores ON profesores.dni_p = aulasyprofesores.dni_p
  6. ....
  7. aquí filtras sólo los registros que correspondan al aula de dibujo.
  8. ....
  9. ORDER BY alguncampo

Observa también que cambié el orden de las tablas aulas y aulasyprofesores. Es recomendable que en el FROM pongas la tabla de relaciones (es decir aquella en la que sólo estás almacenando los id a los catálogos) y en los INNER JOIN's coloques las tablas catálogo.

Saludos
Leo.

Etiquetas: 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 16:23.