Filtrare query "WHERE" con due campi

di il
13 risposte

Filtrare query "WHERE" con due campi

Ciao, devo filtrare una query con due campi distinti per un report. 

Sotto le proprietà di apertura del report con un solo filtro che funziona, ma se al posto di questo filtri ci metto per esempio:

=[ID_Letture]=3249 And [ID_Condominio]=37

non filtra nulla, sbaglio la sintassi o non si puo' fare?

Grazie

13 Risposte

  • Re: Filtrare query "WHERE" con due campi

    Sicuro che esistano dati per quella combinazione di criteri?

    Ovvero per il condominio con ID 37 esiste un record con id letture 3249?

  • Re: Filtrare query "WHERE" con due campi

    Scusate, dopo varie prove ho trovato che mancavano le parentesi tonde:

    ([ID_Letture]=3571) AND ([ID_Condominio]=220)

    Cosi' lo accetta!

  • Re: Filtrare query "WHERE" con due campi

    In realtà le parentesi tonde non dovrebbero essere il problema.

    Hai provato anche con i valori precedenti? Quelli che adesso mostri sono valori diversi

    Se i dati esistono deve funzionare anche con

    [ID_Letture]=3249 And [ID_Condominio]=37

    oppure

    [ID_Letture]=3571 And [ID_Condominio]=220

  • Re: Filtrare query "WHERE" con due campi

    Si si provato con entrambi, se non ci sono le parentesi non filtra nulla

    Le parentesi le ho scoperte entrando nella query, mettendo i due filtri sotto la maschera manualmente e poi vedendola il codice SQL e li ho scoperto che metteva le parentesi tonde.

  • Re: Filtrare query "WHERE" con due campi

    Ti assicuro che le parentesi nel caso che hai mostrato sono ininfluenti. Il fatto che l'interfaccia le aggiunga non è fondamentale.

    Quindi prima il tuo era un altro problema.

    Libero di non crederci

  • Re: Filtrare query "WHERE" con due campi

    Non è che non ci credo, è che non funziona nel mio caso, rifatto adesso togliendo le parentesi tonde e non filtra nulla. Poi che dipenda da altro non saprei proprio da cosa, ma fatto stà che mettendole il filtro funziona. Bho.

    Anche io davo per scontato che non servissero, solo dopo che ho visto il codice SQL le ho notate e mettendole funziona.

  • Re: Filtrare query "WHERE" con due campi

    Per curiosità, mostra tutta la frase SQL completa

  • Re: Filtrare query "WHERE" con due campi

    Sicuro che non ci sia del codice vba da qualche parte?

  • Re: Filtrare query "WHERE" con due campi

    SELECT Appartamenti.Subalterno, Appartamenti.ID_Appartamento AS Appartamenti_ID_Appartamento, Appartamenti.Millesimi, [Condomini Query].SommaDiMillesimi, [Condomini Query].Condominio, [Condomini Query].[Quota fissa], [Condomini Query].Programmato, [Condomini Query].ID_Condominio, Tabella_Letture.NoteLetture, [Condomini Query].Indirizzo, [Condomini Query].CAP, [Condomini Query].Città, [Condomini Query].Provincia, [Condomini Query].Telefono, [Condomini Query].[e-mail], [Condomini Query].[Tipo contabilizzazione], Appartamenti.Piano, Appartamenti.Scala, Appartamenti.Interno, Tipo_Contabilizzazione.Tipo, Tabella_Letture.[Costo energetico], Tabella_Letture.[Costo manutenzione], Tabella_Letture.[Costo parti comuni], Appartamenti.Nominativo, [Caloriferi Con Letture Query].Vano, [Caloriferi Con Letture Query].Matricola, [Caloriferi Con Letture Query].P, [Caloriferi Con Letture Query].A, [Caloriferi Con Letture Query].L, [Caloriferi Con Letture Query].C, [Caloriferi Con Letture Query].Correttivo, [Caloriferi Con Letture Query].KC, [Caloriferi Con Letture Query].Potenza, [Caloriferi Con Letture Query].Ktot, [Caloriferi Con Letture Query].K202, [Caloriferi Con Letture Query].Data, [Caloriferi Con Letture Query].Lettura, [Caloriferi Con Letture Query].ID_Appartamento, [Caloriferi Con Letture Query].ID_Letture, Tabella_Letture.NoteLetture, Tabella_Letture.Data, Tabella_Letture.[Costo letture caduno], Tabella_Letture.ConsumoRiscaldamento, Tabella_Letture.ConsumoACS, Appartamenti.FabbisognoRiscaldamento, [Condomini Query].SommaDiFabbisognoRiscaldamento, Last([Caloriferi Con Letture Query].Note_Lettura) AS UltimoDiNote_Lettura, Last([Caloriferi Con Letture Query].Note_Lettura_Stampa) AS UltimoDiNote_Lettura_Stampa, [Condomini Query].Cessati
    FROM ((([Condomini Query] INNER JOIN Appartamenti ON [Condomini Query].ID_Condominio = Appartamenti.ID_Condominio) INNER JOIN Tipo_Contabilizzazione ON [Condomini Query].[Tipo contabilizzazione] = Tipo_Contabilizzazione.ID) INNER JOIN [Caloriferi Con Letture Query] ON Appartamenti.ID_Appartamento = [Caloriferi Con Letture Query].ID_Appartamento) INNER JOIN Tabella_Letture ON [Caloriferi Con Letture Query].ID_Letture = Tabella_Letture.ID_Letture
    GROUP BY Appartamenti.Subalterno, Appartamenti.ID_Appartamento, Appartamenti.Millesimi, [Condomini Query].SommaDiMillesimi, [Condomini Query].Condominio, [Condomini Query].[Quota fissa], [Condomini Query].Programmato, [Condomini Query].ID_Condominio, [Condomini Query].Indirizzo, [Condomini Query].CAP, [Condomini Query].Città, [Condomini Query].Provincia, [Condomini Query].Telefono, [Condomini Query].[e-mail], [Condomini Query].[Tipo contabilizzazione], Appartamenti.Piano, Appartamenti.Scala, Appartamenti.Interno, Tipo_Contabilizzazione.Tipo, Tabella_Letture.[Costo energetico], Tabella_Letture.[Costo manutenzione], Tabella_Letture.[Costo parti comuni], Appartamenti.Nominativo, [Caloriferi Con Letture Query].Vano, [Caloriferi Con Letture Query].Matricola, [Caloriferi Con Letture Query].P, [Caloriferi Con Letture Query].A, [Caloriferi Con Letture Query].L, [Caloriferi Con Letture Query].C, [Caloriferi Con Letture Query].Correttivo, [Caloriferi Con Letture Query].KC, [Caloriferi Con Letture Query].Potenza, [Caloriferi Con Letture Query].Ktot, [Caloriferi Con Letture Query].K202, [Caloriferi Con Letture Query].Data, [Caloriferi Con Letture Query].Lettura, [Caloriferi Con Letture Query].ID_Appartamento, [Caloriferi Con Letture Query].ID_Letture, Tabella_Letture.NoteLetture, Tabella_Letture.Data, Tabella_Letture.[Costo letture caduno], Tabella_Letture.ConsumoRiscaldamento, Tabella_Letture.ConsumoACS, Appartamenti.FabbisognoRiscaldamento, [Condomini Query].SommaDiFabbisognoRiscaldamento, [Condomini Query].Cessati
    HAVING ((([Condomini Query].ID_Condominio)=37) AND (([Caloriferi Con Letture Query].ID_Letture)=3249) AND (([Condomini Query].Cessati)=False));

  • Re: Filtrare query "WHERE" con due campi

    Ciao,

    ma il filtro mica lo imposti fisso nelle proprietà, oppure come lo passi ?

  • Re: Filtrare query "WHERE" con due campi

    Penso che la tua testa abbia lo stesso disordine… non è un'offesa ma una critica. Magari comici da una query semplice e man mano aggiungi i vari criteri di filtraggio.

    Cosa significano: 

    Select Appartamenti.ID_Appartamento AS Appartamenti_ID_Appartamento

    E:

    GROUP BY Appartamenti.ID_Appartamento 

    esistono appartamenti clonati?

    Forse volevi usare order by…

    Comunque, in tutto questo, dov'è ubicato il “where” che da il titolo? 

    Ho trovato “having”, ecco svelato il mistero delle parentesi.

    Un altro consiglio è l'uso di parametri per passare i criteri di filtraggio.

    Comunque l'importante è che funziona.

  • Re: Filtrare query "WHERE" con due campi

    SELECT 
    Appartamenti.Subalterno, 
    Appartamenti.ID_Appartamento                            AS Appartamenti_ID_Appartamento, 
    Appartamenti.Millesimi, 
    [Condomini Query].SommaDiMillesimi, 
    [Condomini Query].Condominio, 
    [Condomini Query].[Quota fissa], 
    [Condomini Query].Programmato, 
    [Condomini Query].ID_Condominio, 
    Tabella_Letture.NoteLetture, 
    [Condomini Query].Indirizzo, 
    [Condomini Query].CAP, 
    [Condomini Query].Città, 
    [Condomini Query].Provincia, 
    [Condomini Query].Telefono, 
    [Condomini Query].[e-mail], 
    [Condomini Query].[Tipo contabilizzazione], 
    Appartamenti.Piano, 
    Appartamenti.Scala, 
    Appartamenti.Interno, 
    Tipo_Contabilizzazione.Tipo, 
    Tabella_Letture.[Costo energetico], 
    Tabella_Letture.[Costo manutenzione], 
    Tabella_Letture.[Costo parti comuni], 
    Appartamenti.Nominativo, 
    [Caloriferi Con Letture Query].Vano, 
    [Caloriferi Con Letture Query].Matricola, 
    [Caloriferi Con Letture Query].P, 
    [Caloriferi Con Letture Query].A, 
    [Caloriferi Con Letture Query].L, 
    [Caloriferi Con Letture Query].C, 
    [Caloriferi Con Letture Query].Correttivo, 
    [Caloriferi Con Letture Query].KC, 
    [Caloriferi Con Letture Query].Potenza, 
    [Caloriferi Con Letture Query].Ktot, 
    [Caloriferi Con Letture Query].K202, 
    [Caloriferi Con Letture Query].Data, 
    [Caloriferi Con Letture Query].Lettura, 
    [Caloriferi Con Letture Query].ID_Appartamento, 
    [Caloriferi Con Letture Query].ID_Letture, 
    Tabella_Letture.NoteLetture, 
    Tabella_Letture.Data, 
    Tabella_Letture.[Costo letture caduno], 
    Tabella_Letture.ConsumoRiscaldamento, 
    Tabella_Letture.ConsumoACS, 
    Appartamenti.FabbisognoRiscaldamento, 
    [Condomini Query].SommaDiFabbisognoRiscaldamento, 
    Last([Caloriferi Con Letture Query].Note_Lettura)           AS UltimoDiNote_Lettura, 
    Last([Caloriferi Con Letture Query].Note_Lettura_Stampa)    AS UltimoDiNote_Lettura_Stampa, 
    [Condomini Query].Cessati
    
    FROM ((([Condomini Query] 
                    INNER JOIN Appartamenti ON [Condomini Query].ID_Condominio = Appartamenti.ID_Condominio
                ) 
                INNER JOIN Tipo_Contabilizzazione ON [Condomini Query].[Tipo contabilizzazione] = Tipo_Contabilizzazione.ID
            )        
            INNER JOIN [Caloriferi Con Letture Query] ON Appartamenti.ID_Appartamento = [Caloriferi Con Letture Query].ID_Appartamento
        ) 
        INNER JOIN Tabella_Letture ON [Caloriferi Con Letture Query].ID_Letture = Tabella_Letture.ID_Letture
    
    GROUP BY 
        Appartamenti.Subalterno, 
        Appartamenti.ID_Appartamento, 
        Appartamenti.Millesimi, 
        [Condomini Query].SommaDiMillesimi, 
        [Condomini Query].Condominio, 
        [Condomini Query].[Quota fissa], 
        [Condomini Query].Programmato, 
        [Condomini Query].ID_Condominio, 
        [Condomini Query].Indirizzo, 
        [Condomini Query].CAP, 
        [Condomini Query].Città, 
        [Condomini Query].Provincia, 
        [Condomini Query].Telefono, 
        [Condomini Query].[e-mail], 
        [Condomini Query].[Tipo contabilizzazione], 
        Appartamenti.Piano, 
        Appartamenti.Scala, 
        Appartamenti.Interno, 
        Tipo_Contabilizzazione.Tipo, 
        Tabella_Letture.[Costo energetico], 
        Tabella_Letture.[Costo manutenzione], 
        Tabella_Letture.[Costo parti comuni], 
        Appartamenti.Nominativo, 
        [Caloriferi Con Letture Query].Vano, 
        [Caloriferi Con Letture Query].Matricola, 
        [Caloriferi Con Letture Query].P, 
        [Caloriferi Con Letture Query].A, 
        [Caloriferi Con Letture Query].L, 
        [Caloriferi Con Letture Query].C, 
        [Caloriferi Con Letture Query].Correttivo, 
        [Caloriferi Con Letture Query].KC, 
        [Caloriferi Con Letture Query].Potenza, 
        [Caloriferi Con Letture Query].Ktot, 
        [Caloriferi Con Letture Query].K202, 
        [Caloriferi Con Letture Query].Data, 
        [Caloriferi Con Letture Query].Lettura, 
        [Caloriferi Con Letture Query].ID_Appartamento, 
        [Caloriferi Con Letture Query].ID_Letture, 
        Tabella_Letture.NoteLetture, 
        Tabella_Letture.Data, 
        Tabella_Letture.[Costo letture caduno], 
        Tabella_Letture.ConsumoRiscaldamento, 
        Tabella_Letture.ConsumoACS, 
        Appartamenti.FabbisognoRiscaldamento, 
        [Condomini Query].SommaDiFabbisognoRiscaldamento, 
        [Condomini Query].Cessati
    
    HAVING ((([Condomini Query].ID_Condominio)=37) 
        AND (([Caloriferi Con Letture Query].ID_Letture)=3249) 
        AND (([Condomini Query].Cessati)=False));

    @simonebaldini MA SEI SICURO che questa query ABBIA SENSO?

    stai estraendo tutto quello che c'e' da ben 5 tabelle

    [Condomini Query]
    Appartamenti
    Tipo_Contabilizzazione
    [Caloriferi Con Letture Query]
    Tabella_Letture

    nel 99.9999% dei casi, non ha senso. 

    Ma, insomma, usando un'intera bottiglia di atiemetico (sostanze usate per evitare di vomitare ;-) Chissa' perche' si chiama "anti-emetico'), ci possiamo passare sopra ;-)

    Fai una GROUP BY su 47 colonne, che non hanno minimamente senso (che senso ha fare una GROUP BY sul numero di telefono o sull'indirizzo di email).

    Messa cosi', questa GROUP BY e NIENTE sono ESATTAMENTE LA STESSA COSA.

    Poiche' hai usato una GROUP BY, gioco forza, per selezionare qualcosa, DEVI USARE una HAVING.

    .

    TUTTO SBAGLIATO, TUTTO DA RIFARE.

    .

    Non e' un errore del tipo: ho dipinto l'automobile di rosa, ma la volevo arancione.

    Qui' e' del tipo: volevo un'automobile arancione ma invece di dipingerla, l'ho buttata giu' dal dirupo!

  • Re: Filtrare query "WHERE" con due campi

    20/05/2023 - migliorabile ha scritto:


    TUTTO SBAGLIATO, TUTTO DA RIFARE.

    Non e' un errore del tipo: ho dipinto l'automobile di rosa, ma la volevo arancione.
    Qui' e' del tipo: volevo un'automobile arancione ma invece di dipingerla, l'ho buttata giu' dal dirupo!

    Ma attenzione!!! …Il dirupo serve per sverniciarla,  prima di riverniciarla nuovamente…  
    è tecnica, semplice e pura tecnica.

    Però non penso che sia tutto sbagliato…. è solo tutto da rifare. 

    simonebaldini è necessario ripartire da:

    • Tabelle
    • Chiavi Primarie
    • Indici
      • Univoci e non
    • Relazioni
    • Sintassi
      • Denominazione Campi
      • Denominazione Oggetti
    • Etc…
      • Etc… è la parte fondamentale, la più importante, il cuore del progetto

    .
    Insomma… queste non sono assolutamente delle critiche, ma solo buoni consigli per riflettere e per operare proficuamente.

    Se vuoi un parere tecnico per verificare lo stato dell'arte del progetto e per migliorarlo, posta lo screen delle Relazioni e ripartiamo da lì. Sarebbe un bel confronto e approfondimento di come strutturare ed organizzare un Progetto.

Devi accedere o registrarti per scrivere nel forum
13 risposte