Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Sql: concatenare join, si può?

    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

    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:

    codice:
    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!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    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!

    codice:
    SELECT Tabella1.Title, Tabella3.Name
    FROM Tabella3 LEFT JOIN (Tabella1 LEFT JOIN Tabella2 ON Tabella1.groupID = Tabella2.ID)
         ON Tabella3.AuthorID = Tabella2.Author;
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Grazie!

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

    Buccleuch

  4. #4

    Ho bisogno di aiuto di nuovo...

    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!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.