Non so che tipo di querly fare

catellostefano

Utente Attivo
19 Dic 2008
525
2
0
www.stepo.biz
Salve,
ho questa situazione ma non so come fare. Potreste aiutarmi?
Grazie

Struttura DB:

TABELLA Elementi
id | idElemento | idTipo
1 | 1 | 1

TABELLA Tipi
id | Tipo
1 | Persona

TABELLA Valori
id | idElemento | idInfo | Valore
1 | 1 | 1 | Mario
1 | 1 | 2 | Rossi
1 | 1 | 3 | 0810000000
1 | 1 | 3 | 3330000000

TABELLA Info
id | Info | Multi
1 | Nome | 0
1 | Cognome | 0
1 | Telefono | 1


Risultato desiderato:

idElemento | Nome | Cognome | Telefono |
1 | Mario | Rossi | 0810000000, 3330000000 |
 

HolidaySoft.it

Utente Attivo
16 Ott 2012
106
1
0
Milano
www.holidaysoft.it

catellostefano

Utente Attivo
19 Dic 2008
525
2
0
www.stepo.biz
Ciao Stefano,
la query si può realizzare, ma il db sembra strutturato in modo molto strano....
Sei sicuro della struttura presentata nel tuo post (es: la TABELLA Valori mostra i diversi dati nei vari record anzichè mostrarli su diverse colonne)??

Michele

[HR][/HR]
A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!
So ce è una struttura stana, ma è così.
ogni elmento ha i suoi valori su più righe della tabella elementi valori.
 

HolidaySoft.it

Utente Attivo
16 Ott 2012
106
1
0
Milano
www.holidaysoft.it
Ciao Stefano,
per avere il tuo risultato dovresti utilizzare un linguaggio di programmazione e creare dei cicli sulle tabelle.
Invece, se vuoi avere un risultato parziale tramite una query, dovresti utilizzare la seguente query:

Codice:
select elementi.idelemento, a1.nome, a2.cognome, a3.telefono from Elementi,
(select idelemento, valore as nome from tb_valori a, tb_info b where a.IDINFO=b.ID and b.INFO='Nome') a1,
(select idelemento, valore as cognome from tb_valori a, tb_info b where a.IDINFO=b.ID and b.INFO='Cognome') a2,
(select idelemento, valore as Telefono from tb_valori a, tb_info b where a.IDINFO=b.ID and b.INFO='Telefono' and a.id=3) a3
where 1=1 
and elementi.idelemento=a1.idelemento
and elementi.idelemento=a2.idelemento
and elementi.idelemento=a3.idelemento
perchè ti ho indicato "parziale"? perchè il numero di telefono viene mostrato come concatenazione di due records, non agevole realizzarlo tramite semplice query
Inoltre nella tua tabella "Info" gli id sembrano errati, dovrebbero essere quelli riportati nella tabella Valori, ossia:

Codice:
TABELLA Info
id | Info | Multi
1 | Nome | 0
2 | Cognome | 0
3 | Telefono | 1
Ciao
Michele

[HR][/HR]
A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!