Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27

Discussione: Select annidate

  1. #1
    Utente di HTML.it L'avatar di jet
    Registrato dal
    Dec 2002
    residenza
    Chieti
    Messaggi
    866

    Select annidate

    codice:
    If Me!data_iniziale = "3 mesi" Then
    codice:
    data_iniziale = Now() - 90
    stringDate1 = Format(data_iniziale, "mm/dd/yyyy")
    
    
    strSQL = "SELECT UCase(ClientiInSalone.Nome) AS nome1, UCase(Replace(ClientiInSalone.Cognome,'|','''')) AS Cognome1, ClientiInSalone.data_cliente FROM clientiInSalone WHERE clientiInSalone.data_cliente <= #" & stringDate1 & "# NOT IN (SELECT ClientiInSalone.cognome FROM clientiInSalone WHERE clientiInSalone.data_cliente >= #" & stringDate1 & "#);"
    ll mio obiettivo è eliminare dall'elenco le clienti presenti dopo un certo range ma ottengo tutti i record

  2. #2
    la metto in forma più leggibile

    codice:
    strSQL = "
    SELECT 
       UCase(ClientiInSalone.Nome) AS nome1, 
       UCase(Replace(ClientiInSalone.Cognome,'|','''')) AS Cognome1, 
       ClientiInSalone.data_cliente 
    FROM 
       clientiInSalone 
    WHERE 
       clientiInSalone.data_cliente <= #" & stringDate1 & "# NOT IN 
       (
          SELECT 
             ClientiInSalone.cognome 
          FROM 
             clientiInSalone 
          WHERE 
            clientiInSalone.data_cliente >= #" & stringDate1 & "#
       )
    ;"
    ma non capisco cosa vuoi fare: puoi spiegarti meglio? grazie

  3. #3
    Utente di HTML.it L'avatar di jet
    Registrato dal
    Dec 2002
    residenza
    Chieti
    Messaggi
    866
    Voglio elencare la prima Select con i nomi minori di stringdate1 e poi eliminare i nomi dopo stringdate1.
    in questo modo trovo le clienti “perse” da una certa data ed elimino le stesse magari presenti dopo questa data

  4. #4
    Utente di HTML.it L'avatar di jet
    Registrato dal
    Dec 2002
    residenza
    Chieti
    Messaggi
    866
    con il seguente ottengo l’elenco da eliminare nella Select. Se invece metto <=#12/6/2021# ottengo l’elenco completo da correggere.

    SELECT Cliente.Cognome, Cliente.Nome, clientiInSalone.data_cliente

    FROM Cliente INNER JOIN clientiInSalone ON (Cliente.Nome = clientiInSalone.nome) AND (Cliente.Cognome = clientiInSalone.cognome)

    WHERE (((clientiInSalone.data_cliente)>=#12/6/2021#));

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    anch'io faccio un po' fatica a capire cosa ti serve...
    prova a spiegarlo con la logica delle parole invece che con la query.

    occhio alla parola "eliminare" che per noi significa cancellare dal db


    edit: magari indica cosa serve, non tanto cosa non serve

  6. #6
    Utente di HTML.it L'avatar di jet
    Registrato dal
    Dec 2002
    residenza
    Chieti
    Messaggi
    866
    Ho due tabelle.
    CLIENTE campi: nome, cognome
    CLIENTEINSALONE campi: nome, cognome, data_cliente
    devo trovare nella tabella cliente i record non più presenti nella tabella clientiinsalone da una data Now()-90 oppure Now()-180 che recupero dal modulo.
    la query postata devo capire come farla funzionare in modo che estrapoli sia quando uso il segno minore e sia quando uso il segno maggiore
    Ultima modifica di jet; 06-03-2022 a 18:07

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    provo a riformulare:
    vuoi trovare i clienti, già presenti prima, ma che non si sono presentati dopo la data now()-90, è così?
    poi vuoi farci qualcosa?

    capendo lo scopo forse possiamo aiutarti meglio

  8. #8
    Utente di HTML.it L'avatar di jet
    Registrato dal
    Dec 2002
    residenza
    Chieti
    Messaggi
    866
    Devo trovare i clienti prima della data ad esempio Now()-90 e poi da questa Select togliere i nomi presenti dopo questa data.
    Si tratta di trovare clienti perse, cioè che non sono presenti nella tabella clientiinsalone da una data -90 oppure -120 ecc. ma se gli stessi clienti sono presenti nella stessa tabella clientiinsalone dopo questa data, evidentemente non sono clienti perse e quindi questi nomi NON SONO DA ELENCARE nella Select.
    Può infatti capitare che la cliente Pippo esiste nella tabella con una data 01/11/2021 e poi anche 04/03/2022;la Select con la data_cliente<Now()-90 “01/11/2021” elenca la cliente Pippo, ma questo è il problema, perché la stessa c’è anche quando data_cliente>Now()-90 “04/03/2022” perché la stessa cliente si è presentata nel frattempo.
    spero di essere stato piu chiaro

  9. #9
    ti conviene ragionare sulla data dell'ultimo appuntamento (con max()) : se è più vecchia di un tot allora fai quello che devi fare

  10. #10
    Utente di HTML.it L'avatar di jet
    Registrato dal
    Dec 2002
    residenza
    Chieti
    Messaggi
    866
    Grazie. Avevo già pensato di inserire un campo data_cliente nella tabella cliente e con un update ogni volta inserendo la data max.
    Farò sapere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.