Trasporre righe in colonne + quesito schema

lunedì 16 maggio 2016 - 19.34

liuc Profilo | Junior Member

Buongiorno a tutti,
dopo moooolto tempo ho ripreso a programmare e devo realizzare un piccolo applicativo in Access 2010 per gestire le sedute di una commissione i cui membri appartengono a quattro enti (chiamiamoli E1, E2, E3, E4) . Quando la commissione si riunisce questa è composta da quattro membri (uno per ciascun ente) ma solo quelli dell'Ente E1 possono ricoprire il ruolo di Presidente.

Le tabelle su cui ora sto lavorando sono :

MEMBRO (idmembro, cognome, nome, tipo) [tipo è il campo discriminante che indica il tipo di ente cui il membro appartiene)
PARTECIPAZIONE (idmembro, idseduta)
SEDUTA (idseduta, data)

L'alternativa (che però non mi piace tanto) prevede la sostituzione delle tabelle Partecipazione e Seduta con una sola tabella SedutaCommissione (IdSeduta, Data , IdPresidente, IdMembroEnte2, IdMembroEnte3, IdMembroEnte4)

Prima domanda :
concordate sulla struttura delle tre tabelle?

Seconda domanda:
Date le tabelle

PARTECIPAZIONE
IdSeduta-IdMembro
1----------1
1----------2
1----------3
1----------4

MEMBRO
IdMembro-Cognome-Nome-Tipo
1------------A----A-----E1
2------------B----B-----E2
3------------C----C-----E3
4------------D----D-----E4

vorrei scrivere una query per avere il seguente risultato , ma sono proprio arrugginito:
IdSeduta-IdMembroE1-NomeMembroE1-IdMembroE2-NomeMembroE2-IdMembroE3-NomeMembroE3-IdMembroE4-NomeMembroE4
1----------1---------------A A--------------2-----------------B B----------------3---------------C C -----------------4-------------D D

Spero in un vostro aiuto.

Grazie.



renarig Profilo | Expert

>Le tabelle su cui ora sto lavorando sono :
>
>MEMBRO (idmembro, cognome, nome, tipo) [tipo è il campo discriminante che indica il tipo di ente cui il membro appartiene)
>PARTECIPAZIONE (idmembro, idseduta)
>SEDUTA (idseduta, data)

>Prima domanda :
>concordate sulla struttura delle tre tabelle?
Io magari aggiungerei una tabella in cui definisci i 4 enti (tipo), ---> ma non è fondamentale


>vorrei scrivere una query per avere il seguente risultato ,
> ....... .............. .........
Se i tipi sono sempre e solo gli stessi 4 ---> Una query con delle IIf raggruppate
SELECT SEDUTA.idseduta, Max(IIf([tipo]="E1",[idmebro])) AS IdMembroE1, Max(IIf([tipo]="E1",[cognome])) AS CognomeMembroE1, Max(IIf([tipo]="E1",[nome])) AS NomeMembroE1, Max(IIf([tipo]="E2",[idmebro])) AS IdMembroE2, Max(IIf([tipo]="E2",[cognome])) AS CognomeMembroE2, Max(IIf([tipo]="E2",[nome])) AS NomeMembroE2, Max(IIf([tipo]="E3",[idmebro])) AS IdMembroE3, Max(IIf([tipo]="E3",[cognome])) AS CognomeMembroE3, Max(IIf([tipo]="E3",[nome])) AS NomeMembroE3, Max(IIf([tipo]="E4",[idmebro])) AS IdMembroE4, Max(IIf([tipo]="E4",[cognome])) AS CognomeMembroE4, Max(IIf([tipo]="E4",[nome])) AS NomeMembroE4 FROM SEDUTA INNER JOIN ( MEMBRO INNER JOIN PARTECIPAZIONE ON MEMBRO.idmebro = PARTECIPAZIONE.idmembro ) ON SEDUTA.idseduta = PARTECIPAZIONE.idseduta GROUP BY SEDUTA.idseduta ;
poi magari concateni il nome con il cognome

Facci sapere

liuc Profilo | Junior Member

Grazie mille, proprio quello che mi serviva.
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5