Trovare recordnon assegnati a un cliente

di il
1 risposte

Trovare recordnon assegnati a un cliente

Buongiorno a tutti,
vorrei risolvere un problema che mi si è creato sviluppando un software gestionale con access.
La struttura del db è cosi composta, una tabella anagrafica clienti dove ho tutti i dati di anagrafici relativi al cliente, e il codice cliente è un id numerazione automatica. Successivamente ho una tabella elenco corsi la quale contiene tutti i corsi che un cliente può sostenere. Ad ogni corso è stato assegnato un codice di tipo numerico automatico. Poi ho una terza tabella che si chiama corsi clienti dove c'è un id numerazione automatica come chiave primaria poi ho il campo codice cliente e codice corso insieme a due campi data inizio e data fine. Questa terza tabella è stata creata per assegnare più corsi a un cliente, o meglio avendo una maschera principale con tutti i dati presi dalla tabella anagrafica cliente, ho creato una sotto maschera dove è sufficiente inserire il codice del corso per assegnare quel corso al cliente. Sotto è stata creata una seconda sottomaschera dove mi ritrovo tutti i corsi che sono stati assegnati a quel clinte e spostandomi tra i vari record ovviamente l'elenco dei corsi varia.
Sapendo che in totale un cliente può fare tutti i corsi che in totale sono 59, devo fare una query la quale mi deve restituire come risultato tutti i corsi che il cliente può fare,Mi spiego meglio se il cliente con codice 1 ha fatto i corsi con codice 1 2 3 la query deve restituirmi che il cliente con codice 1 può fare i corsi con codice 4 5 6 7 8 ecc fino al numero 59 che è l'ultimo corso.
Vi ringrazio in anticipo per il vostro aiuto.
Buona giornata
andrea

1 Risposte

  • Re: Trovare recordnon assegnati a un cliente

    Ciao,
    prova in questo modo:
    
    SELECT c1.ID_Corso
    FROM Corsi AS c1
    WHERE NOT EXISTS (
    	SELECT Corsi_Clienti.ID_Cliente
    	FROM Corsi_Clienti JOIN Corsi AS c2 ON Corsi_Clienti.ID_Cliente = Corsi.ID_Corso
    	WHERE c1.ID_Corso = c2.ID_Corso
    )
    
    sostanzialmente la clausola WHERE controlla che l'ID_Corso attuale non sia presente tra i corsi dove il cliente si è già registrato (join)

    fammi sapere
Devi accedere o registrarti per scrivere nel forum
1 risposte