Valore non ripetuto in un campo query

di jibi il
5 risposte
Buonasera,
ho creato una query e volevo fare in modo che comparisse un solo record per ogni "nome_ditta", cioè quel record con data_evento più recente. Non ci sono riuscito, infatti mi compaiono due record col valore "bb" nel campo nome_ditta.
Qualcuno sa aiutarmi? Va bene risolvere il tutto anche creando una seconda query. Ditemi voi. Ovviamente lascio il db in allegato.

Grazie mille

db:

5 Risposte

  • 1. In visualizzazione struttura query, clicca in alto sul tasto Totali
    2. In corrispondenza del campo [data_evento], scegli Formula: Max
  • Posta il predicato SQL non il tuo lavoro.
  • Ringrazio entrambi per avermi risposto. Ho provato con la formula max ma non cambia niente nel mio caso.
    lascio anche il codice sql della query.
    SELECT tb_ditte.nome_ditta, tb_eventi.data_evento, tb_oggetti.nome_oggetto, IIf([tb_oggetti]![cadenza_data]="Giorni",DateAdd("d",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Mesi",DateAdd("m",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Settimane",DateAdd("ss",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Anni",DateAdd("yyyy",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),"")))) AS Scadenza, "ogni " & [tb_oggetti]![numero_data] & " " & [tb_oggetti]![cadenza_data] AS Cadenza
    FROM qy_pre_scadenza, (tb_ditte INNER JOIN tb_oggetti ON tb_ditte.ID = tb_oggetti.ID_tb_ditte) INNER JOIN tb_eventi ON tb_oggetti.ID = tb_eventi.ID_tb_oggetti
    GROUP BY tb_ditte.nome_ditta, tb_eventi.data_evento, tb_oggetti.nome_oggetto, IIf([tb_oggetti]![cadenza_data]="Giorni",DateAdd("d",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Mesi",DateAdd("m",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Settimane",DateAdd("ss",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Anni",DateAdd("yyyy",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),"")))), "ogni " & [tb_oggetti]![numero_data] & " " & [tb_oggetti]![cadenza_data], tb_ditte.stato_ditta, tb_oggetti.stato_oggetto
    HAVING (((tb_ditte.stato_ditta)=True) AND ((tb_oggetti.stato_oggetto)=True))
    ORDER BY IIf([tb_oggetti]![cadenza_data]="Giorni",DateAdd("d",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Mesi",DateAdd("m",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Settimane",DateAdd("ss",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Anni",DateAdd("yyyy",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),""))));
    Grazie a entrambi e scusate per la mia incompetenza. Ho copiato tutto il codice sql per maggiore completezza.

    jibi
  • Crei prima qy_pre_scadenza che seleziona l'ultimo evento relativo alla ditta in base alla data evento:
    
    SELECT tb_ditte.nome_ditta, Max(tb_eventi.data_evento) AS MaxDidata_evento
    FROM (tb_ditte INNER JOIN tb_oggetti ON tb_ditte.ID = tb_oggetti.ID_tb_ditte) INNER JOIN tb_eventi ON tb_oggetti.ID = tb_eventi.ID_tb_oggetti
    GROUP BY tb_ditte.nome_ditta;
    
    poi la qy_scadenzache che ti fa vedere tutti i dati che vuoi
    
    SELECT tb_ditte.nome_ditta, tb_eventi.data_evento, tb_oggetti.nome_oggetto, IIf([tb_oggetti]![cadenza_data]="Giorni",DateAdd("d",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Mesi",DateAdd("m",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Settimane",DateAdd("ss",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Anni",DateAdd("yyyy",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),"")))) AS Scadenza, "ogni " & [tb_oggetti]![numero_data] & " " & [tb_oggetti]![cadenza_data] AS Cadenza
    FROM (tb_eventi INNER JOIN (tb_ditte INNER JOIN qy_pre_scadenza ON tb_ditte.nome_ditta = qy_pre_scadenza.nome_ditta) ON tb_eventi.data_evento = qy_pre_scadenza.MaxDidata_evento) INNER JOIN tb_oggetti ON (tb_oggetti.ID = tb_eventi.ID_tb_oggetti) AND (tb_ditte.ID = tb_oggetti.ID_tb_ditte)
    WHERE (((tb_ditte.stato_ditta)=True) AND ((tb_oggetti.stato_oggetto)=True))
    ORDER BY IIf([tb_oggetti]![cadenza_data]="Giorni",DateAdd("d",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Mesi",DateAdd("m",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Settimane",DateAdd("ss",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),IIf([tb_oggetti]![cadenza_data]="Anni",DateAdd("yyyy",[tb_oggetti]![numero_data],[tb_eventi]![data_evento]),""))));
    
  • Grazie mille !!! Funziona !!!!!

    jibi
Devi accedere o registrarti per scrivere nel forum
5 risposte