PDA

Visualizza la versione completa : Sql: concatenare join, si può?


Buccleuch
05-09-2004, 14:01
Salve a tutti

Ho questo problema: ho tre tabelle e devo riuscire partendo dai dati di una tabella a ricavare i dati della terza passando per la seconda :D

Mi spiego meglio:

tabella1: ha due colonne groupID e title
tabella2: ha due colonne ID e author
tabella3: ha due colonne authorID e name

Nella tabella1 ci sono i vari libri con il relativo gruppo di appartenenza.

Nella tabella2 ci sono i vari gruppi con il relativo autore.

Nella tabella3 ci sono gli autori, ognuno col proprio id.

Io voglio ottenere in una query tutti i libri e i dati dell'autore, ma per avere questi dati devo passare per la tabella2:

groupID --> ID --> authorID

Ho provato una query di questo tipo:


SELECT tabella1.title, tabella3.name FROM tabella1 LEFT JOIN tabella2 ON tabella1.groupID = tabella2.ID LEFT JOIN tabella3 ON tabella2.author = tabella3.authorID

E mi dà errore.

Come posso fare?

Grazie!

LeleFT
05-09-2004, 16:46
Questo errore può dipendere da due fattori:

1) Il DBMS che usi non supporta le JOIN (scarterei questa ipotesi)
2) L'uso delle parentesi che mancano!



SELECT Tabella1.Title, Tabella3.Name
FROM Tabella3 LEFT JOIN (Tabella1 LEFT JOIN Tabella2 ON Tabella1.groupID = Tabella2.ID)
ON Tabella3.AuthorID = Tabella2.Author;


Ciao. :ciauz:

Buccleuch
05-09-2004, 19:26
Grazie!

Adesso "funziona tutto a dovere"! Purtroppo la mia ignoranza in sql è quasi totale ed è facile intrecciarsi...

Buccleuch

Buccleuch
09-09-2004, 12:37
Dunque... il problema è sul genere del precedente.

Le stesse tabelle di prima, con l'aggiunta di una quarta tabella:

tabella4: ha due colonne authorID e book

Inoltre la tabella1 ha una colonna in più, titleID (con una chiave univoca per ogni libro).

Io devo ottenere una sql che, a partire dall'id dell'autore, mi ricavi tutti i suoi libri SIA dalla tabella2 con i gruppi di appartenenza sia dalla tabella4 con le informazioni libro per libro.

Se nel passaggio prima era:

groupID --> ID --> authorID

Ora ho bisogno che sia:

authorID --> groupID + book = titleId.

Riconosco che sia intricato e forse non mi sono spiegato troppo bene! :master:

In pratica devo ottenere una tabella con tutti i titoli dei libri di un dato autore sia che appartengano a gruppi (tabella2) che a singole pubblicazioni (tabella4).

Se qualcuno ha il coraggio di provarci... grazie!

Loading