Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Tabla con varios lookups a otras. Y otra tabla con un lookup a la primera. En SQL (https://www.clubdelphi.com/foros/showthread.php?t=45186)

Wonni 25-06-2007 20:10:12

Tabla con varios lookups a otras. Y otra tabla con un lookup a la primera. En SQL
 
hola;

No consigo saber como construir una consulta en SQL. He buscado aqui y en el libro SQL de Francisco Charte, pero no me aclaro.

Se trata de una tabla con varios campos. 5 de ellos deberian ser lookups. Pero quiero poder ordenar tambien por estos campos lookup, asi que segun he investigado por los foros, lo mejor es hacerlo con SQL. Además, es lo que trato de hacer ahora, lo posible en SQL.

Tengo una tabla LIBROS y otra LISTAS. En la tabla LISTAS simplemente tengo 3 campos: ID_CENTRO, ID_CURSO, ISBN.

El campo ISBN es el enlace a la tabla LIBROS que tambien tiene un campo ISBN.

En la tabla LIBROS deben existir varios campos lookup hacia otras tablas como por ejemplo: EDITORIAL, ASIGNATURA, IDIOMA.

No se como hacer en SQL para colocar los lookups en la tabla LIBROS a las tablas Editorial, Asginatura, Idioma y despues en la tabla LISTAS el lookup a la tabla LIBROS con el campo ISBN para obtener los datos del libro.

Decir que para editar registros utilizaria otros Querys. Lo digo por que he buscado aqui en los foros y ese problema aparecia varias veces. Pero esta consulta solo seria para no editar, solo ver.

ramiretor 25-06-2007 22:33:19

Hola:
Pues tu pregunta es muy ambigua, pero una rapida contestación es que tienes que hacer inner join entre las tablas Libros y Listas, Editorial, Asignatura e Idiomas

Saludos

Wonni 25-06-2007 22:39:12

gracias ramiretor;

Estaba yo pensando que seria con OUTER JOIN

Voy a repasar el libro de Charte otra vez a ver si lo consigo. Esque soy totalmente nuevo en esto de SQL :o

ramiretor 25-06-2007 23:11:03

Pues es que el Outer es para registros que están en una tabla pero no en la otra, mas bien, necesitas un manual de SQL, si das información de los campos en que se relacionan las tablas tal vez te podamos ayudar para sacar la consulta

Saludos

Wonni 25-06-2007 23:49:17

Si, si manua tengo(el libro de Charte, ClubDelphi, Google) pero como soy totalmente novato y la consulta no es sencilla precisamente. Vamos que no he empezado asi con algo como: SELECT * FROM TABLA :p

Voy a detallar la estructura de Tablas, para ver si me podeis ayudar. Os lo agradezco mucho. Si no me fuera urgente, trataria de averiguar mas por mi cuenta. Aunque sigo en ello, por supuesto ;)




TABLA CURSOS:

ID_CURSO - DESCRIP - NIVEL - ORDEN

TABLA ASIGNATURAS:

ID_ASIGN - DESCRIP

TABLA EDITORIALES:

ID_EDITOR - DESCRIP




TABLA LIBROS:

ID_CURSO - ID_ASIGN - ID_EDITOR - TITULO - ISBN



TABLA LISTAS:

ISBN - ID_CENTRO - ID_CURSO - OPTATIVA - F_IMPLAN


En la tabla listas ha de aparecer todo. Lo filtraré con una Clausula Where con los campos ID_CENTRO - ID_CURSO. Pero el caso es que deben salir todos los demas campos.

Para introducir un libro en las LISTAS, este debe estar dado de alta en LIBROS.

Y claro, la tabla LISTAS la debo poder ordenar por TITULO, ISBN, ORDEN(del curso. El cual está en la tabla CURSOS), ASIGNATURA, EDITORIAL . . .


Tal vez estoy pidiendo demasiado. La verdad es complicado, por lo menos eso me parece a mi ahora.

ramiretor 26-06-2007 00:15:49

Hola pues no tanto.
Cuando usas varias tablas se recomienda usar letras para diferenciar una de otra, supongo que traes todos los campos de libros (y como tampoco dices que motor de BD usas) puede variar un poco

Código SQL [-]

  SELECT A.* FROM LIBROS A
     INNER JOIN CURSOS B ON A.ID_CURSO = B.ID_CURSO
     INNER JOIN ASIGNATURA C ON A.ID_ASIG = C.ID_ASIG
     INNER JOIN EDITORIAL D ON A.ID_EDITOR = B.ID_EDITOR
     INNER JOIN LISTAS E ON A.ISBN = E.ISBN
  WHERE .....

Saludos


La franja horaria es GMT +2. Ahora son las 20:14:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi