• User Newbie

    Query da database Mysql con tabelle multiple

    Ciao a tutti,
    ho un problemino con una query Mysql:

    ho un database composto da più tabelle con i linìbri di una biblioteca. ecco la struttura:
    tabella libri - IDlibro, Titolo, IDautore1, IDautore2, IDautore3, IDeditore
    tabella autori - IDautore, nome, cognome
    tabella editore - IDeditore, nomeautore

    con la query qui sotto cercando un titolo, ne ricavo il titolo, il none e cognome dell'autore1 e l'editore:
    [PHP]$query = "SELECT Libri.Titolo, CONCAT(Autori.Nome,' ', Autori.Cognome) AS nomeautore, Editori.Nome FROM Libri, Autori, Editori WHERE Titolo LIKE '%$cercatitolo%' AND Editori.Id_Editore = Libri.Id_Editore AND Autori.Id_Autore = Libri.Id_Autore ORDER BY Titolo";[/PHP]

    il mio problema è:
    come faccio a ottenere anche l'autore 2 e l'autore 3 (se esistenti)?

    ho provato di tiutto ma non ci sono riuscito...
    Qualcuno può aiutarmi?

    grazie in anticipo.
    paolo


  • User

    Appare che sia una relazione n-n. Se puoi cambiare la struttura consiglerei di rimuovere gli autori dai libri e avere un'altra tabella libriautori che contiene queste relazioni.


  • User Newbie

    @neroux said:

    Appare che sia una relazione n-n. Se puoi cambiare la struttura consiglerei di rimuovere gli autori dai libri e avere un'altra tabella libriautori che contiene queste relazioni.
    in realtà potrei, ma possibile che non si riesca con una query?
    ... e poi una volta creata la nuova tabella come potri procedere?


  • Super User

    Scusa se intervengo : la tabella "libri", giusto suggerimento di pepe50, non è normalizzata.
    Quindi o normalizzi le tabelle , oppure in alternativa ricorri alla tabelle derivate annidando più select ( che è abbastanza complicato ).

    In pratica dovresti crearti una vista e poi updatare la stessa con nome e cognome dell'autore per ognuno di essi.