Query di ricerca SQL relazione molti a molti

di il
4 risposte

Query di ricerca SQL relazione molti a molti

Buongiorno, avrei bisogno cortesemente di aiuto per la formulazione di una query, ecco la situazione:

Ho una tabella utenti la cui chiave primaria è "Cod_Utenti" e che contiene tutte le informazioni degli utenti che possono accedere al sito.
Ho una tabella "Impianti" che contiene tutte le informazioni degli impianti registrati, la cui chiave primaria è "Cod_Impianto".
Ora, ogni utente può accedere alle informazioni riguardanti tot impianti di sua proprietà, inoltre più utenti possono essere collegati ad un impianto.

Il mio obiettivo è scrivere una query dove tiro fuori l'elenco dei nominativi degli impianti che sono collegati all'utente che ha fatto il login, così che egli possa in seguito leggere tutte le informazioni relative all'impianto scelto.

Ho provato con il creare una tabella intermedia chiamata "workgroup" che funga da "ponte" fra le due tabelle, quindi ho provato con queste query ma non funzionano:

SELECT denominazione FROM tab02_impianti WHERE tab02_impianti.cod_impianto = tab05_workgroup.cod_impianto AND tab05_workgroup.cod_utente = tab01_utenti.cod_utente

SELECT denominazione FROM tab02_impianti JOIN tab05_workgroup ON tab02_impianti.cod_impianto = tab05_workgroup.cod_impianto AND tab05_workgroup.cod_utente = tab01_utenti.cod_utente

Per provare, con "SELECT denominazione FROM tab02_impianti" ottengo invece tutti gli impianti registrati, senza filtri, a dimostrazione che comunque il problema è la query.

Come potrei procedere? Si tratterebbe di una stored procedure, in ingresso ho una variabile con il codice utente che dovrei inserire nella query in qualche modo.

4 Risposte

  • Re: Query di ricerca SQL relazione molti a molti

    Eehhhhh?
    tra l'altro tab05 significa che ci sono tante tabelle uguali, con nome diverso?
  • Re: Query di ricerca SQL relazione molti a molti

    +m2+ ha scritto:


    Eehhhhh?
    tra l'altro tab05 significa che ci sono tante tabelle uguali, con nome diverso?
    Grazie della replica. Cosa devo chiarire meglio? In realtà dovrei togliere quelle parti ("Tab0X") dai nomi delle tabelle perché sono inutili, ho continuato ad usare questa convenzione che usava un collega dove ogni tabella che veniva creata viene numerata. Non ci sono tabelle uguali quindi.
  • Re: Query di ricerca SQL relazione molti a molti

    Il mio obiettivo è scrivere una query dove tiro fuori l'elenco dei nominativi degli impianti che sono collegati all'utente che ha fatto il login, così che egli possa in seguito leggere tutte le informazioni relative all'impianto scelto.
    Perchè non ti basta un JOIN sulle due tabelle, ma addirittura una tabella temporanea (??)
    qualcosa del genere
    
    SELECT denominazione FROM tab02_impianti 
    join
    tab05_workgroup 
    on tab02_impianti.cod_impianto = tab05_workgroup.cod_impianto 
    join
    tab01_utenti
    on
    tab05_workgroup.cod_utente = tab01_utenti.cod_utente
    
  • Re: Query di ricerca SQL relazione molti a molti

    +m2+ ha scritto:


    Il mio obiettivo è scrivere una query dove tiro fuori l'elenco dei nominativi degli impianti che sono collegati all'utente che ha fatto il login, così che egli possa in seguito leggere tutte le informazioni relative all'impianto scelto.
    Perchè non ti basta un JOIN sulle due tabelle, ma addirittura una tabella temporanea (??)
    qualcosa del genere
    
    SELECT denominazione FROM tab02_impianti 
    join
    tab05_workgroup 
    on tab02_impianti.cod_impianto = tab05_workgroup.cod_impianto 
    join
    tab01_utenti
    on
    tab05_workgroup.cod_utente = tab01_utenti.cod_utente
    
    WOOO! Funziona!!! Grazie mille!!!
    Unica cosa, mi triplica i risultati in elenco riportando tre volte ogni valore xD.

    Ma più che altro mi interesserebbe capire il ragionamento dietro a questa soluzione che hai proposto, in modo da poter in futuro riuscire ad affrontare da solo problemi simili
Devi accedere o registrarti per scrivere nel forum
4 risposte