Hola a todos. Otra vez yo tengo un pequeño problema con una consulta de 3 tablas.
- grados
Id_grado
area1
area2
area3
maestro1
maestro2
maestro3
- Áreas
Id_area
Nombre
- Maestro
Id_maestro
Nombre
Lo que quiero es mostrar la consulta en esta forma.
Id_grado 10B
area1 011 Matemáticas
maestro1 012 Juan
area2 008 Sociales
maestro2 021 Pedro
area3 006 Física
maestro3 002 Ana
Pero solo me muestra es esto
Id_grado 10B
area1 011 Matemáticas
maestro1 012 Juan
area2 008
maestro2 021
area3 006
maestro3 002
Esta es la consulta que estoy tratando de aplicar
Select grados.Id_grado, area1, grados.area2, grados.area3, grados.maestro1,
grados.maestro2, grados.maestro3
from grados
inner join areas on (id_area=area1)
inner join maestros on (id_maestro=maestro1)
por favor que alguien me ayude
consulta de 3 tablas
Comenzado por
nilsemsolano
, mar 10 2014 01:11
5 respuestas en este tema
#1
Escrito 10 marzo 2014 - 01:11
#2
Escrito 10 marzo 2014 - 03:21
Es sencillo: en los campos de tu select no están los nombres de los maestros 2 y 3 nio de las areas 2 y 3, por eso no salen.
Y recuerda ponerle un alias a cada tabla de la consulta o tendras problemas!
Y recuerda ponerle un alias a cada tabla de la consulta o tendras problemas!
delphi
select g.Id_grado, g.area1, a1.nombre, g.area2, , a2.nombre, g.area3, a3.nombre, g.maestro1, m1.nombre, g.maestro2, m2.nombre, g.maestro3, m3.nombre from grados g inner join areas a1 on (a1.id_area=g.area1) inner join areas a2 on (a2.id_area=g.area2) inner join areas a3 on (a3.id_area=g.area3) inner join maestros m1 on (m1.id_maestro=g.maestro1) inner join maestros m2 on (m2.id_maestro=g.maestro2) inner join maestros m3 on (m3.id_maestro=g.maestro3)
#3
Escrito 10 marzo 2014 - 01:43
Ok, bien
Sigo teniendo problemas, me muetra los nombres de las materias pero si coloco los de los profesores me lanza el error:
Dynamic Error
SQL error code = -206
Column unknown
TUT01.NOMBRE
At line 12 column 7.
Sigo teniendo problemas, me muetra los nombres de las materias pero si coloco los de los profesores me lanza el error:
Dynamic Error
SQL error code = -206
Column unknown
TUT01.NOMBRE
At line 12 column 7.
sql
SELECT sln.id_salon, sln.materia_uno, sln.materia_dos, sln.materia_tres, sln.materia_cuatro, sln.materia_cinco, sln.materia_seis, sln.materia_siete, sln.materia_ocho, sln.materia_nueve, sln.materia_diez, sln.materia_once, sln.materia_doce, sln.docente_uno, sln.docente_dos, sln.docente_tres, sln.docente_cuatro, sln.docente_cinco, sln.docente_seis, sln.docente_siete, sln.docente_ocho, sln.docente_nueve, sln.docente_diez, sln.docente_once, sln.docente_doce, mt01.nombre, mt02.nombre, mt03.nombre, mt04.nombre, mt05.nombre, mt06.nombre, mt07.nombre, mt08.nombre, mt09.nombre, mt10.nombre, mt11.nombre, mt12.nombre, tut01.nombre, tut02.nombre, tut03.nombre, tut04.nombre, tut05.nombre, tut06.nombre, tut07.nombre, tut08.nombre, tut09.nombre, tut10.nombre, tut11.nombre, tut12.nombre FROM salones sln INNER JOIN materias mt01 ON (mt01.id_materia=sln.materia_uno) INNER JOIN materias mt02 ON (mt02.id_materia=sln.materia_dos) INNER JOIN materias mt03 ON (mt03.id_materia=sln.materia_tres) INNER JOIN materias mt04 ON (mt04.id_materia=sln.materia_cuatro) INNER JOIN materias mt05 ON (mt05.id_materia=sln.materia_cinco) INNER JOIN materias mt06 ON (mt06.id_materia=sln.materia_seis) INNER JOIN materias mt07 ON (mt07.id_materia=sln.materia_siete) INNER JOIN materias mt08 ON (mt08.id_materia=sln.materia_ocho) INNER JOIN materias mt09 ON (mt09.id_materia=sln.materia_nueve) INNER JOIN materias mt10 ON (mt10.id_materia=sln.materia_diez) INNER JOIN materias mt11 ON (mt11.id_materia=sln.materia_once) INNER JOIN materias mt12 ON (mt12.id_materia=sln.materia_doce) INNER JOIN docentes tut01 ON (tut01.id_docente=sln.docente_uno) INNER JOIN docentes tut02 ON (tut02.id_docente=sln.docente_dos) INNER JOIN docentes tut03 ON (tut03.id_docente=sln.docente_tres) INNER JOIN docentes tut04 ON (tut04.id_docente=sln.docente_cuatro) INNER JOIN docentes tut05 ON (tut05.id_docente=sln.docente_cinco) INNER JOIN docentes tut06 ON (tut06.id_docente=sln.docente_seis) INNER JOIN docentes tut07 ON (tut07.id_docente=sln.docente_siete) INNER JOIN docentes tut08 ON (tut08.id_docente=sln.docente_ocho) INNER JOIN docentes tut09 ON (tut09.id_docente=sln.docente_nueve) INNER JOIN docentes tut10 ON (tut10.id_docente=sln.docente_diez) INNER JOIN docentes tut11 ON (tut11.id_docente=sln.docente_once) INNER JOIN docentes tut12 ON (tut12.id_docente=sln.docente_doce)
#4
Escrito 10 marzo 2014 - 02:19
ok, disculpa pero tenia un error en TUT01.NOMBRE que en realidad era TUT01.NOMBRES.
ahora el problema es que tengo 20 cursos, pero solamente me esta mostrando 2
como podre solucionar esto, osea quiero que me muestre todos los cursos con sus respectivos nombres de materias y nombres de profeores.
les agradezco de antemano.
ahora el problema es que tengo 20 cursos, pero solamente me esta mostrando 2
como podre solucionar esto, osea quiero que me muestre todos los cursos con sus respectivos nombres de materias y nombres de profeores.
les agradezco de antemano.
#5
Escrito 11 marzo 2014 - 02:27
En tu sql no aparece curso por ningun sitio, solo habla de salones, no?
Sin conocer el problema concreto no te puedo decir mucho mas.
Sin conocer el problema concreto no te puedo decir mucho mas.
#6
Escrito 18 marzo 2014 - 10:24
Hola nilsemsolano,
Te propongo que cambies tu base de datos a la siguiente estructura que te presento, entiendo que seria mas flexible, pues te permitira tener varios areas y profesores, ademas de otras ventanas.
Tendrias el siguiente resultado:
La base de datos propuesta seria:
espero se de tu ayuda
saludos
Rafael Liriano
Te propongo que cambies tu base de datos a la siguiente estructura que te presento, entiendo que seria mas flexible, pues te permitira tener varios areas y profesores, ademas de otras ventanas.
Tendrias el siguiente resultado:
delphi
SELECT * FROM VW_CURSOS GRADO NOMBRE_GRADO AREA NOMBRE_AREA PROFESOR NOMBRE_PROFESOR 101 GRADO 1 201 Matematica 301 PROFESOR 1 101 GRADO 1 202 Sociales 302 PROFESOR 2 101 GRADO 1 203 Fisica 303 PROFESOR 3 102 GRADO 2 201 Matematica 304 PROFESOR 4 102 GRADO 2 202 Sociales 302 PROFESOR 2 102 GRADO 2 203 Fisica 303 PROFESOR 3
La base de datos propuesta seria:
delphi
SET SQL DIALECT 3; SET NAMES NONE; CREATE DATABASE 'C:\ejemplos\DATOS.fdb' USER 'SYSDBA' PAGE_SIZE 16384 DEFAULT CHARACTER SET NONE; /******************************************************************************/ /*** Tablas ***/ /******************************************************************************/ CREATE TABLE AREAS ( ID_AREA INTEGER NOT NULL, NOMBRE VARCHAR(50) ); CREATE TABLE CURSOS ( ID_GRADO INTEGER NOT NULL, ID_AREA INTEGER NOT NULL, ID_PROFESOR INTEGER NOT NULL ); CREATE TABLE GRADOS ( ID_GRADO INTEGER NOT NULL, NOMBRE VARCHAR(50) ); CREATE TABLE PROFESORES ( ID_PROFESOR INTEGER NOT NULL, NOMBRE VARCHAR(50) ); /******************************************************************************/ /*** Vistas ***/ /******************************************************************************/ CREATE VIEW VW_CURSOS( GRADO, NOMBRE_GRADO, AREA, NOMBRE_AREA, PROFESOR, NOMBRE_PROFESOR) AS select cursos.id_grado, grados.nombre, cursos.id_area, areas.nombre, cursos.id_profesor, profesores.nombre from profesores inner join cursos on (profesores.id_profesor = cursos.id_profesor) inner join grados on (cursos.id_grado = grados.id_grado) inner join areas on (cursos.id_area = areas.id_area) ; /******************************************************************************/ /*** Claves Primarias ***/ /******************************************************************************/ ALTER TABLE AREAS ADD CONSTRAINT PK_AREAS PRIMARY KEY (ID_AREA); ALTER TABLE CURSOS ADD CONSTRAINT PK_CURSOS PRIMARY KEY (ID_GRADO, ID_AREA, ID_PROFESOR); ALTER TABLE GRADOS ADD CONSTRAINT PK_GRADOS PRIMARY KEY (ID_GRADO); ALTER TABLE PROFESORES ADD CONSTRAINT PK_PROFESORES PRIMARY KEY (ID_PROFESOR); /******************************************************************************/ /*** Claves Foraneas ***/ /******************************************************************************/ ALTER TABLE CURSOS ADD CONSTRAINT FK_CURSOS_AREA FOREIGN KEY (ID_AREA) REFERENCES AREAS (ID_AREA); ALTER TABLE CURSOS ADD CONSTRAINT FK_CURSOS_GRADO FOREIGN KEY (ID_GRADO) REFERENCES GRADOS (ID_GRADO); ALTER TABLE CURSOS ADD CONSTRAINT FK_CURSOS_PROFESOR FOREIGN KEY (ID_PROFESOR) REFERENCES PROFESORES (ID_PROFESOR);
espero se de tu ayuda
saludos
Rafael Liriano