Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Inner Join?

  1. #1

    Inner Join?

    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!!!

  2. #2
    da regolamento dovresti indicare il db, per cui il mio suggerimento potrebbe non funzionare con certi db

    SELECT *
    FROM TPersone
    INNER JOIN
    (TAssociazioneTipologia INNER JOIN TTipologia ON TAssociazioneTipologia.FK_Tipologia = TTipologia.PK_Tipologia AND TTipologia.Tipologia = 'amico')
    ON TPersone.PK_Persone = TAssociazioneTipologia.FK_Persona;

  3. #3
    Ciao in effetti mi ero dimenticato di dire che il DBMS e' ACCESS 2007.

    Ho provato in effetti la tua query ma mi dice :
    "JOIN expression not supported" e mi evidenzia la parte :
    TTipologia.Tipologia = 'amico'


  4. #4

    Re: Inner Join?

    Originariamente inviato da pitopito

    ...
    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;
    ....
    Ciao,

    la clausola WHERE va messa alla fine della tua frase sql

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.