Inner join ?

pitopito

Nuovo Utente
25 Lug 2012
4
0
0
SCENARIO :

Creazione di un database Rubrica.

Ogni record (persona) di tale tabella deve poter essere associata ad una tipologia (es. amico, collega, parente etc).

Ogni record (persona) può appartenere a più di una tipologia (es. Amilcare Rossi è sia amico che collega mentre Maria Bianchi è solo una cliente)

La tipologia di appartenenza (amico, cliente, etc) deve essere scalabile e dev’essere possibile aggiungere nuove tipologie.


TABELLE :

TABELLA TPersone (PK_Persone, Nome, Cognome, Cell)  Contiene l’anagrafica della persona
TABELLA TAssociazionePersonaTipologia (PK_Associazione, FK_Persona, FK_Tipologia)
TABELLA TTipologia (PK_Tipologia, Tipo)  contiene le tipologie (es. amico, parente, collega etc)

La tabella TAssociazionePersonaTipologia relaziona in modo flessibile la tabella TPersona e TTipologia in quanto la sua chiave esterna FK_Persona punta in modo univoco ad una persona e la sua chiave esterna FK_Tipologia punta ad una tipologia da associare a quella persona.
L’utilizzo di una tabella di associazione permette di creare più associazioni per ogni singola persona.

PROBLEMA :
creare una query SQL per interrogare la base dati ed ottenere il cognome delle persone associate ad una tipologia (es. ottenere tutti i cognomi delle persone classificate come “collega”). Devo utilizzare una INNER JOIN nidificata?

Ho provato questo comando ma mi da errore evidenzioando la clausola "WHERE" :
SELECT *
FROM TPersone
INNER JOIN
(TAssociazioneTipologia INNER JOIN TTipologia ON TAssociazioneTipologia.FK_Tipologia = TTipologia.PK_Tipologia WHERE TTipologia.Tipologia = 'amico')
ON TPersone.PK_Persone = TAssociazioneTipologia.FK_Persona;

Qualcuno di voi puo' illuminarmi? GRAZIE!!!
 
Così?

SELECT TPersone.PK_Persone, TPersone.Nome, TAssociazionePersonaTipologia.PK_Tipologia
FROM TPersone INNER JOIN TAssociazionePersonaTipologia ON TPersone.PK_Persone = TAssociazionePersonaTipologia.PK_Persona
WHERE TAssociazionePersonaTipologia.PK_Tipologia ="1";
 

Discussioni simili