Condividi tramite

Visualizzare valori univoci in una query

Anonimo
2022-07-08T08:48:04+00:00

Buon giorno a tutti.

Ho 2 tabelle in relazione tra loro con relazione uno a molti e che riguardano i numeri di telefono di ciascun dipendente ( per es. casa, ufficio, cellulare, fisso e cosi via).

Quindi un dipendente ha più numeri di telefono abbinati con le specifiche summenzionate.

Ho creato la seguente query :

SELECT DISTINCT TblAnagrafica.Matricola, TblAnagrafica.Grado, TblAnagrafica.Cognome, TblAnagrafica.Nome, TblArrivo_Partenza.Arrivo_Nucleo, TblArrivo_Partenza.Reparto_Assegnazione, TblArrivo_Partenza.Articolazione_Assegnazione, TblTelefoni_Militare.Numero_Telefono, TblTelefoni_Militare.Tipo_Telefono, TblAnagrafica.Sesso, DLookUp("Categoria","TblGradi","[Grado]='" & [Grado] & "'") AS Categoria

FROM (TblAnagrafica INNER JOIN TblTelefoni_Militare ON TblAnagrafica.ID_Anagrafica = TblTelefoni_Militare.ID_Anagrafica) INNER JOIN TblArrivo_Partenza ON TblAnagrafica.ID_Anagrafica = TblArrivo_Partenza.ID_Anagrafica

WHERE (((TblAnagrafica.In_Forza)=True));

Nonostante abbia inserito la clausola Distinct, la query mi fa visualizzare più volte il nominativo del dipendente quanti sono i telefoni a lui abbinati.

Ad esempio:

Mario Rossi fisso 111111

Mario Rossi cellulare 222222

Mario Rossi Ufficio 44444

Chiedo il vostro aiuto per poter ottenere uno scenario simile, con il nominativo riportato solo una volta con a fianco i numeri di telefono abbinati:

Mario Rossi fisso 111111 cellulare 222222 Ufficio 44444

Come occorre modificare la query per ottenere il risultato indicato?

Ringrazio chi mi aiuta in questo.

Ciao, Nicola.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

domenico laurenza 9,900 Punti di reputazione Moderatore volontario
2022-07-13T09:26:57+00:00

Ciao Nicola,

sono ripartito dal Db che che tu avevi condiviso per ripetere tutte le operazioni e prenderne nota.

Sempre su una copia del tuo Db

  • Elimina nelle relazioni quella che lega le tabelle TblTelefoni_Militare e TblTipo_Telefono.
  • Nella tabella TblTelefoni_Militare sul campo Tipo_Telefono nelle proprietà "Ricerca" imposta casella di testo e sul tipo di dato del campo Numerico. Il sistema ti da un avviso che potresti perdere dei dati ma tu conferma e vai avanti.
  • Su relazioni reimposta la relazione tra le tabelle TblTelefoni_Militare e TblTipo_Telefono.
  • Sulla funzione Telefono sostituisci il codice Sql come di seguito Set myRst = CurrentDb.OpenRecordset("SELECT TblTelefoni_Militare.Numero_Telefono " & _
                                      **"FROM TblTipo\_Telefono INNER JOIN TblTelefoni\_Militare ON TblTipo\_Telefono.ID\_telefono = TblTelefoni\_Militare.Tipo\_Telefono " & \_** 
    
                                      **"Where Id\_Anagrafica = " & Id\_Anagrafica & " And TblTipo\_Telefono.Tipo = '" & Tipo & "'")** 
    

Devi verificare le form preesistenti che nel Db trattavano i numeri di telefono .

Facci sapere

Mimmo

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

30 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2022-07-08T11:19:32+00:00

    Ciao Opoke, la tua query, diventa :

    SELECT TblAnagrafica.Matricola, TblAnagrafica.Grado, TblAnagrafica.Cognome, TblAnagrafica.Nome, TblArrivo_Partenza.Arrivo_Nucleo, TblArrivo_Partenza.Reparto_Assegnazione, TblArrivo_Partenza.Articolazione_Assegnazione, TblTelefoni_Militare.Numero_Telefono, TblTelefoni_Militare.Tipo_Telefono, TblAnagrafica.Sesso, DLookUp("Categoria","TblGradi","[Grado]='" & [Grado] & "'") AS Categoria

    FROM (TblAnagrafica INNER JOIN TblTelefoni_Militare ON TblAnagrafica.ID_Anagrafica = TblTelefoni_Militare.ID_Anagrafica) INNER JOIN TblArrivo_Partenza ON TblAnagrafica.ID_Anagrafica = TblArrivo_Partenza.ID_Anagrafica

    WHERE (((TblAnagrafica.In_Forza)=True)) Group BY TblAnagrafica.Cognome;

    ma ottengo questo messaggio di errore, qualcosa non va come dovrebbe:

    Ciao, Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-07-08T10:47:42+00:00

    Va bene, per favore prova questo e fammi sapere come va

    SELECT TblAnagraphic.Serial Number, TblAnagraphic.Degree, TblAnagraphic.Surname, TblAnagraphic.Name, TblArrivo_Partenza.Arrival_Core, TblArrivo_Partenza.Assignment_Department, TblArrivo_Partenza.Assignment_Articulation, TblTelefoni_Militare.Phone_Number, TblTelefoni_Militare.Phone_Type, TblAnagraphic.Sex, DLookUp("Category","TblGrades","[Grade]='" & [Grade] & "'") AS Category
    FROM (TblAnagrafica INNER JOIN TblTelefoni_Militare ON TblAnagrafica.ID_Anagrafica = TblTelefoni_Militare.ID_Anagrafica) INNER JOIN TblArrivo_Partenza ON TblAnagrafica.ID_Anagrafica = TblArrivo_Partenza.ID_Anagrafica
    WHERE (((TblAnagrafica.In_Forza)=True)) Gruppo per TblAnagraphic.Surname;

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-07-08T10:29:12+00:00

    Ciao Opoke, grazie per il cortese riscontro.

    Provo a seguire il tuo consiglio, sinceramente ho difficoltà a capire come adattare i miei campi alla logica della tua query, ci proverò.

    Ciao, Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2022-07-08T09:38:35+00:00

    Ciao Nichicanta,

    Sono Abraham e sarei felice di aiutarti con la tua domanda.

    La risposta alla tua domanda è che non vuoi usare select distinct. Si desidera creare una query di aggregazione che utilizza il gruppo per. Non è chiaro cosa si voglia inserire nel gruppo per clausola.

    vedi esempio

    SELEZIONA a.title,
    a.lat,
    a.lon,
    a.alert_content_id,
    a.date_added,
    conteggio(*)
    FROM 'reply' r INNER JOIN
    'avvisi' a
    ON r.alert_id = a.alerts
    DOVE 'utente' = '1'
    GRUPPO BY a.title, a.lat, a.lon, a.alert_content_id, a.date_added;

    Spero che queste informazioni aiutino. Se avete domande, fatemelo sapere e sarò lieto di aiutarvi ulteriormente.

    Migliori saluti

    Abramo

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento