PDA

Ver la Versión Completa : Consulta con 3 tablas


NISOTO
20-04-2013, 23:55:12
Hola a todos.

Quiero que por favor me expliquen esto: Poseo 3 tablas en Firebird y delphi 2007

Alumnos
cod_alumno *
cod_curso
nombre
apellidos
año
...

salones
cod_curso *
materia1
ihs1
docente1
....

calificaciones
cod_curso *
cod_alumno *
año *
materia1
docente1
nota1p_mat1
logro1p_mat1
ausencia1_mat1
...

ahora bien lo que deseo es una consulta, en un dbgrid que muestre lo siguiente

cod_alumno, cod_curso, nombre, apellidos, año, cod_curso, materia1, docente1, nota1p_mat1, logro1p_mat1, ausencia1_mat1

espero me colaboren, lo necesito urgentemente.

Casimiro Notevi
21-04-2013, 00:18:41
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

ginkaku
21-04-2013, 10:39:55
Hola amigo. Con la mejor 'onda' te sugiero leer un libro sobre sql urgente, conceptos sobre consultas, clausulas y normalizacion,etc, hacen falta. En fin como dijiste que necesitabas que t expliquen:
En una base de datos(bien hecha) las tablas estan unidas gracias a sus llaves primarias y foraneas. Se navega desde una tabla A a tabla B y luego a la tabla C:
select A.cod_alumno,S.cod_curso,A.nombre,(y todo lo demas)
from Alumnos A,Salones S, Calificaciones C
where A.cod_alumno=C.cod_alumno
and C.cod_curso=S.cod_curso

NISOTO
23-04-2013, 08:15:50
Hola ginkaku

Me sacaste de un gran enrredo que tenia.

Te lo agradezco mucho...

bulc
14-05-2013, 14:08:26
La clave primaria no es un índice, aunque funciona como si lo fuera.
Es el campo de dato único que identifica la tabla. Debe ser no nulo por eso mismo.
Suele usarse el prefijo ID_NombreTablaAbreviado por ejemplo: ID_MAT (Ïndentificador de materias), ID_ESPE (Identificativo de la especie). También se llama clave principal de esa tabla.
Para clave primaria se usa un dato numérico autoincrementado o uno varchar con cifras string.
Luego para enlazar esa tabla madre con otra hija (de detalle) se una la clave foránea. Llamada foránea porque usa la clave primaria de otra tabla forastera.
Por ejemplo si haces una base de datos de animales por especies de animales, puedes tener una tabla de ESPECIES, otra de FAMILIAS y otra de ORDENES.
Cada registro de especie se relaciona con una FAMILIA, pero por cada familia hay una, varias o muchas especies.
Para relacionarlas la tabla de especies ESPECIES (además del campo ID_ESP) llevará un campo con el dato ID_FAMILIA, que también estará en la tabla FAMILIAS.
De esta manera al poner el cursor de un DBGrid en un registro con un ID_FAMILIA, señalará en otro DBGrid, el registro de la tabla FAMILIa a la q el animal pertenece.
Esto se consigue relacionando las clave secundaria de una tabla con primaria o principal de otra.
No se deben confundir las claves primaria y foránea con los índices. (Autorepaso)

Casimiro Notevi
14-05-2013, 16:05:04
La clave primaria no es un índiceBueno, la clave primaria siempre es un índice, otra cosa distinta es que tengas además otros índices.

ozsWizzard
14-05-2013, 16:58:38
O que la clave primaria, no solamente es un indice, pero entre todas las cosas que es una clave primaria, una de ellas es indice. O sea, que sí es un indice, por muy "especial" que sea.