Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Contare duplicati

  1. #1
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Post
    56
    Like Inviati  
    5
    Like Ricevuti  
    0
    Un saluto a tutti,
    come da titolo dovrei estrarre il conteggio (solo il numero) di quante occorrenze si trovano in una tabella, nel dettaglio;
    Ho una tabella con vari campi
    Equipment | Data | Valore | etc...

    Vorrei, dopo aver effettuato dei filtri sul campo "data" e Valore" avere il numero "secco" delle occorrenze trovate sul Campo Equipment (è un campo testo), ho provato come descritto in questo forum a creare una Query "trova duplicati" ma in output produce una lista del campo "Equipment" a me serve solo il numero delle occorrenze.
    Grazie per
    ℹ️ Leggi di più su attila666 ...

  2. #2
    Sgrubak non è in linea Scribacchino
    Post
    590
    Like Inviati  
    10
    Like Ricevuti  
    9
    Dovrai usare il predicato DISTINCT e la funzione COUNT all'interno della tua SELECT.

  3. #3
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Post
    56
    Like Inviati  
    5
    Like Ricevuti  
    0
    Ok ho trovato il numero, ma non riesco ad applicare i filtri, mi spiego;
    Con questa query trovo il numero dei duplicati;
    SELECT Count(iDistinct.Equipment) AS Conteggio
    FROM (SELECT DISTINCT Equipment FROM DB)  AS iDistinct;
    
    ma vorrei inserire questi filtri ;
    WHERE (((DB.[Tipo Ordine])="z006") AND ((DB.[Data creazione ordine])>=#1/1/2020# And (DB.[Data creazione ordine])<=#12/31/2020#+1))
    
    e anche questi;
    HAVING (((DB.[CdL Responsabile])="ilm") AND ((DB.[Tipo Oggetto])="Y_pnt"));
    
    ℹ️ Leggi di più su attila666 ...

  4. #4
    Post
    1,833
    Like Inviati  
    0
    Like Ricevuti  
    6
    Quote Originariamente inviato da attila666 Visualizza il messaggio
    Ok ho trovato il numero, ma non riesco ad applicare i filtri, mi spiego;
    Procedi per gradi
    1) Prima crea una select con la where condition che ti soddisfa in tutto e per tutto.
    2) Modifica quella query includendo solo il campo Equipment e su quello vai con il distinct.
    (il punto 1 e 2 diventano una query unica)
    3) Conta.
    Non sei lontano dalla soluzione già come l'avevi formulata.
    Ultima modifica di Phil_cattivocarattere; 02-02-2021 11:12 

  5. #5
    OsvaldoLaviosa ora è in linea Topo di biblioteca
    Post
    3,091
    Like Inviati  
    0
    Like Ricevuti  
    1
    Potresti ragionare su più query per piccoli passi.
    1. Fai la query con i filtri: Query1.
    2. Poi fai la query ricerca duplicati su Query1: Query2.

    P.S.: scusa Phil_cattivocarattere, ci siamo accavallati. Il ragionamento è lo stesso.
    ℹ️ Leggi di più su OsvaldoLaviosa ...

  6. #6
    Sgrubak non è in linea Scribacchino
    Post
    590
    Like Inviati  
    10
    Like Ricevuti  
    9
    Quote Originariamente inviato da attila666 Visualizza il messaggio
    ma vorrei inserire questi filtri ;
    E inseriscili...
    SELECT Count(iDistinct.Equipment) AS Conteggio
    FROM (SELECT DISTINCT Equipment 
          FROM DB
          WHERE DB.[Tipo Ordine]="z006"
              AND DB.[Data creazione ordine]>=#1/1/2020#
              AND DB.[Data creazione ordine]<=#12/31/2020#+1
              AND DB.[CdL Responsabile])="ilm"
              AND DB.[Tipo Oggetto])="Y_pnt")  AS iDistinct;
    
    La clausola HAVING, non ti serve se non hai il GROUP BY...

  7. #7
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Post
    56
    Like Inviati  
    5
    Like Ricevuti  
    0
    Grazie a tutti, cosi funziona , ma ho sempre dei dubbi su quante parentesi "(" mettere
    le ho aumentate in proporzione a quante ce n'erano prima, che dite troppe ?
    SELECT Count(iDistinct.Equipment) AS Conteggio
    FROM (SELECT DISTINCT Equipment FROM DB WHERE 
    (((((DB.[CdL Responsabile])="ilm")
    AND ((((DB.[Tipo Oggetto])="Y_pnt")
    AND (((DB.[Tipo Ordine])="z006") 
    AND ((DB.[Data creazione ordine])>=#1/1/2020#
    And (DB.[Data creazione ordine])<=#12/31/2020#+1 ))))))))  AS iDistinct;
    
    e perchè l'ultimo "end" è minuscolo ? forse perché riguarda lo stesso campo ? e non c'è parantesi tra i due ultimi filtri,
    scusate le molte domande dopo la soluzione, ma vorrei imparare il più possibile per essere autonomo
    Ultima modifica di attila666; 02-02-2021 11:30 
    ℹ️ Leggi di più su attila666 ...

  8. #8
    Post
    1,833
    Like Inviati  
    0
    Like Ricevuti  
    6
    Quote Originariamente inviato da attila666 Visualizza il messaggio
    Grazie a tutti, cosi funziona , ma ho sempre dei dubbi su quante parentesi "(" mettere
    Grande, grandissima pecca di Access, quella di non avere un editor SQL con un minimo di funzionalità che non siano quelle di... poterci scrivere.
    Sembra che la cosa cambierà (Access: SQL Monaco Editor) ma se non vedo non credo.
    Tanto c'è già QBE che fa tantissimo. Vero! Ma vuoi mettere indentare una SQL!!!
    Vabbè, andiamo avanti.
    Hai scritto la query "interna" in QBE? se metti i criteri tutti in una riga non verranno aggiunte così tante parentesi. Poi ne prendi la SQL e la copi-incolli nella query principale.
    Quello che ha scritto Sgrubak non andava bene? Non ci sono parentesi rotonde di troppo. Se lo copi incolli direttamente in visualizzazione SQL secondo me lo prende senza problemi, cambi visualizzazione in Struttura, torni in SQL e vedi come l'ha modificata Access di suo aggiundo le quadre.
    L'ultimo AND (non END) minuscolo è un pessimo segnale. Funziona? hai fatto il passaggio Visualizzazione Struttura e ritorno in Visualizzazione SQL (con una visualizzazione foglio dati per lanciare l'esecuzione della query) ?
    Ultima modifica di Phil_cattivocarattere; 02-02-2021 13:27 

  9. #9
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Post
    56
    Like Inviati  
    5
    Like Ricevuti  
    0
    Si ho fatto come hai detto e access non ha aggiunto niente al codice Sgrubak, anche cambiando la modalità di visualizzazione (ho dovuto togliere solo due ")" , e io che mi "impiccavo" ogni volta a contare e a conteggiare le parentesi tonde
    SELECT Count(iDistinct.Equipment) AS Conteggio
    FROM (SELECT DISTINCT Equipment FROM DB WHERE DB.[Tipo Ordine]="z006" AND DB.[Data creazione ordine]>=#1/1/2020#  AND DB.[Data creazione ordine]<=#12/31/2020#+1 AND DB.[CdL Responsabile]="ilm"  AND DB.[Tipo Oggetto]="Y_pnt")  AS iDistinct;
    
    Mi gusta questo linguaggio anche se per ora faccio poco e con molta fatica, io programmo abbastanza agevolmente solo in VBA.
    ℹ️ Leggi di più su attila666 ...

  10. #10
    Post
    1,833
    Like Inviati  
    0
    Like Ricevuti  
    6
    Ma non conoscere SQL (che non è Microsoft SQL Server) ed avere a che fare con i database relazionali è un limite da colmare, più o meno velocemente dipende da te.

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Contare righe
    Da firstcode nel forum Microsoft Excel
    Risposte: 19
    Ultimo Post: 02-02-2017, 14:54
  2. Contare con più criteri
    Da Roker1 nel forum Microsoft Excel
    Risposte: 1
    Ultimo Post: 09-10-2016, 17:43
  3. "Contare" valori duplicati - VBA o SQL?
    Da mc76 nel forum Microsoft Access
    Risposte: 13
    Ultimo Post: 01-07-2013, 16:52
  4. Contare in binario
    Da cavalierejody nel forum Visual Basic .Net
    Risposte: 6
    Ultimo Post: 01-01-2009, 18:00
  5. Contare i giorni
    Da sanfra nel forum PHP
    Risposte: 3
    Ultimo Post: 07-05-2008, 16:43