Relazione Molti a Molti: come gestirla con Sql

giovedì 18 novembre 2010 - 12.42
Tag Elenco Tags  SQL Server 2008

sysilvia Profilo | Newbie

Ciao,
sto usando sql da poco e mi sono arenata sulla gestione di una relazione molti a molti. Mi spiego meglio: sto creando un database con le tabelle: Libro, Autore, LibroAUtore, Editore. La tabella LibroAutore l'ho creata avendo una relazione molti a molti tra un determinato libro e un determinato autore. Ora, però, viene il mio dubbio:
Se volessi visualizzare il titolo di un libro e nella colonna accanto tutti gli autori in riga, posso farlo?
Probabilmente ci sono molte fonti su internet, ma la mia ricerca non è molto mirata perchè mi manca un po' di chiarezza su cosa cercare.

alx_81 Profilo | Guru

>Ciao,
Ciao

>sto usando sql da poco e mi sono arenata sulla gestione di una
>relazione molti a molti. Mi spiego meglio: sto creando un database
>con le tabelle: Libro, Autore, LibroAUtore, Editore. La tabella
>LibroAutore l'ho creata avendo una relazione molti a molti tra
>un determinato libro e un determinato autore. Ora, però, viene
>il mio dubbio:
>Se volessi visualizzare il titolo di un libro e nella colonna
>accanto tutti gli autori in riga, posso farlo?
>Probabilmente ci sono molte fonti su internet, ma la mia ricerca
>non è molto mirata perchè mi manca un po' di chiarezza su cosa
>cercare.
Quello che vuoi fare è una denormalizzazione dei dati in colonna su di una riga.
Dovrai fare la trasposta, e per questo puoi usare l'operatore PIVOT
http://msdn.microsoft.com/it-it/library/ms177410.aspx

o crearlo con l'utilizzo di CASE:
http://stackoverflow.com/questions/947281/multiple-column-pivot-in-t-sql
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

sysilvia Profilo | Newbie

Grazie per la risposta. In realtà io volevo mettere un'intera colonna in una sola cella di una riga che è in contrasto con la loica di creazione della tabella che io stessa ho creato. Mi scuso per averti fatto perdere tempo e....mi auguro di imparare in fretta

alx_81 Profilo | Guru

>Grazie per la risposta. In realtà io volevo mettere un'intera
>colonna in una sola cella di una riga che è in contrasto con
>la loica di creazione della tabella che io stessa ho creato.
>Mi scuso per averti fatto perdere tempo e....mi auguro di imparare
>in fretta
Ti scusi? Credimi, è una richiesta frequente..
Però di solito, se non ti serve direttamente da sql server, potresti tornare i dati in maniera normalizzata e poi, l'applicativo che visualizza potrebbe prendersi l'onere di creare l'output desiderato.
Ad esempio con LINQ
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5