Query di selezione stesso campo ma record diversi

di il
8 risposte

Query di selezione stesso campo ma record diversi

Buongiorno a tutti/e,
ho un problema a programmare una query in modo tale che la ricerca venga fatta tenendo conto di valori registrati su un unico campo ma su diversi record, mi spiego:

- tabella 1 (Tbl_collaboratore):
Campo 1: ID
Campo 2: Cognome/Nome
Campo 3: User
Campo 4: Autorizzazione

- tabella 2: (Tbl_ufficio_assegnato):
Campo 1: N_collaboratore --> (relazione con ID della tabella 1)
Campo 2: Codice_Uffici_assegnati

- tabella 3: (Tbl_attivita_ufficio):
campo 1: Attivita_ufficio
campo 2: Codice_ufficio

I dati si presentano come segue:

- Tabella 1 (Tbl_collaboratore)
ID / CognomeNome / User / Autorizzazione
1 / Verdi Giuseppe / VG / Admin
2 / Pinco Pallino / PP / User
3 / Marco Bianchi / MB / User

- Tabella 2 (Tbl_ufficio_assegnato)
N_collaboratore / Codice_Uffici_assegnati
1 / 425
1 / 424
1 / 423
1 / 422
2 / 425
3 / 424

- Tabella 3 (Tbl_attivita_ufficio)
Attivita_ufficio / Codice_ufficio
scrivere / 421
inviare pacco / 422
chiamare al telefono / 422
scrivere / 424
chiamare al telefono / 425
scrivere / 424

L'obiettivo è una Query che mi presenta i dati tenendo conto dell'ufficio assegnato al collaboratore:

Seleziono il collaboratore 1, Verdi Giuseppe

Risultato Query:
Inviare pacco (422)
Chiamare al telefono (422)
Scrivere (422)
Chiamare al telefono (425)
Scrivere (424)

Seleziono il collaboratore 2, PInco Pallino
Chiamare al telefono (425)

Seleziono il collaboratore 3, Marco Bianchi
Scrivere (424)


Il problema che mi si pone è il seguente:
se nella Query, seleziono il collaboratore n° 1, visualizza unicamente i compiti dell'ufficio "425" perchè prende solo il primo record della "Tbl_ufficio_assegnato", tralasciando i campi "422", "423" e "424".

Qualcuno sa darmi un Input su cui lavorare?

Grazie

8 Risposte

  • Re: Query di selezione stesso campo ma record diversi

    apo ha scritto:


    ...
    se nella Query, seleziono il collaboratore n° 1, visualizza unicamente i compiti dell'ufficio "425" perchè prende solo il primo record della "Tbl_ufficio_assegnato",
    Mostra la SQL di quella query, probabilmente è impostato male il join o manca del tutto.
  • Re: Query di selezione stesso campo ma record diversi

    Tabella 1 e Tabella 2 non hanno senso, sono ovviamente in relazione 1-1 e non serve a nulla.
    Metti il campo [Codice_Uffici_assegnati] nella Tabella1 e finita cancellando la Tabella 2
    Se così non è per come hai spiegato c'è qualche cosa che non torna.

    Quindi ipotiziamo di avere le 2 tabelle solo, nella visualizzazione Query, si chiama QBE o Queries Builder Editor, metti tutte e 2 le tabelle in JOIN, selezioni i campi che ti servono ed inserisci nel campo [ID], in quanto [N_collaboratore] secondo me non serve più, la CONDIZIONE che ritieni...
  • Re: Query di selezione stesso campo ma record diversi

    Ciao.
    Ma i dati della tabella 3, come vengono collegati ai dati delle altre 2 tabelle?
    Non c'è nessuna chiave esterna o interna da poter utilizzare per collegare l'attività, con l'ufficio ed il relativo dipendente.
    Usi forse i campi "Campo 2: Codice_Uffici_assegnati" collegato in relazione con "campo 2: Codice_ufficio"?
    Se usi questi campi, la relazione può essere solo 1-1 (o non definita) e quindi ti visualizza solo un dato.
    Devi mettere una chiave interna, così da poter creare una relazione uno-a molti.
  • Re: Query di selezione stesso campo ma record diversi

    La struttura dovrebbe essere la seguente:

    - Tabella 1 (tblCollaboratori)
    IDCollaboratore / CognomeNome / User / Autorizzazione
    1 / Verdi Giuseppe / VG / Admin
    2 / Pinco Pallino / PP / User
    3 / Marco Bianchi / MB / User

    - Tabella 2 (tblUffici)
    IDUfficio / CodiceUfficio / Ufficio
    1 / 421 / Accettazione
    2 / 422 / Segreteria
    3 / 423 / Anagrafica

    - Tabella 3 (tblAttivita)
    IDAttivita / Attivita
    1 / scrivere
    2 / inviare pacco
    3 / chiamare al telefono

    - Tabella 4 (tblUfficioAttivita)
    IDUfficioFk (relazione con IDUfficio della tabella 2) / (relazione con IDAttivita della tabella 3)
    1 / 2
    1 / 3
    2 / 1
    2 / 2
    2 / 3
    3 / 1
    3 / 3

    - Tabella 5 (tblCollaboratoreUffici)
    IDCollaboratoreFk (relazione con IDCollaboratore della tabella 1) / IDUfficioFk (relazione con IDUfficio della tabella 2)
    1 / 1
    1 / 2
    2 / 2
    3 / 1
    3 / 2
    3 / 3

    poi creare correttamente le relazioni in base alla chiave primaria e alla chiave esterna e dopo creerai una o più query per poter visualizzare ciò che vuoi.
  • Re: Query di selezione stesso campo ma record diversi

    Grazie a tutti per i vostri suggerimenti!!!¨

    cerco di spiegarmi meglio il mio problema.
  • Re: Query di selezione stesso campo ma record diversi

    Buongiorno a tutti,

    grazie anche al "Sito Comune" ho ripreso l'esempio 2.36 e l'ho modificato secondo le mie esigenze.

    In base all'utente che si collega, una casella di riepilogo (Elenco) viene popolata con i numeri che identificano l'ufficio.
    La casella di riepilogo è impostata su "Seleziona multipla" - "Estesa".
    Tutte le voci vengono selezionate e viene aperta la query che visualizza i record in questione.

    Tenuto conto di una tabella "Ticket", una casella di riepilogo "Elenco" ed una Query "Query1" ecco il risultato funzionante:

    Private Sub Seleziona_Ufficio_Click()
    Dim strLista As String
    Dim varItem As Variant
    For Counter = 0 To Me!Elenco.ListCount - 1
    Me!Elenco.Selected(Counter) = True
    Next Counter
    'Se non ci sono voci selezionate
    'non ci sono attività da effettuare
    If Me!Elenco.ItemsSelected.Count = 0 Then Exit Sub
    'Cicla nell'insieme delle voci selezionate
    For Each varItem In Me!Elenco.ItemsSelected
    strLista = strLista & _
    Me!Elenco.Column(0, varItem) & ","
    Next varItem
    'Elimina la virgola eccedente
    strLista = Left$(strLista, Len(strLista) - 1)
    'Imposta codice SQL della query
    CurrentDb.QueryDefs("Query1").SQL = "SELECT * FROM Ticket " _
    & "WHERE Numero_Sede IN (" & strLista & ") " _
    & "ORDER BY Numero_Sede;"
    DoCmd.OpenQuery "Query1"
    'Deseleziona tutte le righe della casella di riepilogo
    Dim Cont As Integer
    For Cont = 0 To Me!Elenco.ListCount - 1
    Me!Elenco.Selected(Cont) = False
    Next Cont
    End Sub

    Probabilmente esiste anche un altro procedimento, ma questo lo trovo particolarmente pratico.

    Grazie ancora a tutti e buona giornata.

  • Re: Query di selezione stesso campo ma record diversi

    Io non capisco proprio. Ti è stata data la souzione corretta al tuo problema. Si tratta soltanto di realizzare le giuste correlazioni tra le tabelle e impostare la query secondo le tue esigenze. No capisco a cosa ti serve quel codice.
  • Re: Query di selezione stesso campo ma record diversi

    Fammi capire.
    Tu devi selezionare da una casella di riepilogo un nome di un dipendente e vedere in quali uffici è stato assegnato?
Devi accedere o registrarti per scrivere nel forum
8 risposte