Query GROUP BY

di il
4 risposte

Query GROUP BY

Ciao

Ho una tabella con 3 campi: Contatore, Testo, Booleano

La mia necessità è ottenere una tabella dove il campo testo è univoco e il campo booleano è l'AND dei campi raggruppati per testo. Praticamente una cosa simile a:

SELECT testo, AND(booleano) FROM tabella GROUP BY testo

La funzione di aggregazione AND non esiste a quanto pare...
Come posso fare?

grazie

4 Risposte

  • Re: Query GROUP BY

    Il campo testo univoco puoi ottenerlo sfruttando la proprietà
    Indicizzato: Sì Duplicati non ammmessi.

    Temo che il giochetto dell'AND puoi sfruttarlo in una query, ma non so se ha senso farlo in una tabella.

    Io ho capito che tu hai una tabella così:
    1 | Giovanni | Sì
    2 | Paolo | Sì
    3 | Carlo | No

    Potresti fare una query che unisca il testo di Giovanni + Sì
    ...ma prima di darti una risposta, puoi confermarmi che vuoi ottenere questo?
  • Re: Query GROUP BY

    La mia tabella potrebbe essere così
    1 | Giovanni | Sì
    2 | Paolo | Sì
    3 | Carlo | No
    4 | Giovanni | No
    5 | Paolo | Si
    6 | Giovanni | Si

    Diciamo che così è semplificata rispetto a quella che ho io. A leggerla così non ha molto senso, comunque x l'esempio va bene. Quello che voglio ottenere io è:

    Giovanni | No
    Paolo | Si
    Carlo | No

    Dove Giovanni è no perchè si AND no AND si = no
    Paolo è si perchè si AND si = si
    Carlo è no
  • Re: Query GROUP BY

    Ci sarebbero molte strade per arrivare al risultato finale che vuoi tu, da quelle più eleganti a quelle più spartane, sfruttando la logica matematica. Io me la caverei ragionando così: una catena di AND genera inesorabilmente No quando basta almeno un No, nei restanti casi è Sì. Partento da "Tabella1" dobbiamo arrivare a "Tabella2", secondo la tua richiesta.

    1) Crea 2 query dove trascini, "da Tabella1", il campo Testo e il campo Booleano
    2) Chiamerai le query "Sì" e "No" perchè applicherai il filtro
    Like "Sì" (nel primo caso)
    Like "No" (nel secondo caso)
    al campo Booleano
    3) Crea 2 query ricerca duplicati (esiste una procedura guidata) dalle query "Sì" e "No" avendo cura di includere soltanto il campo Testo. Chiama queste query rispettivamente "Sìx1" e "Nox1"
    4) Apri in visualizzazione struttura "Sìx1" e "Nox1" correggendo dove vedi scritto >1 in >=1
    5) Crea una query ricerca dati non corrispondenti (procedura guidata) partendo da "Sìx1" verso "Nox1" che chiamerai "SìNonNo"
    6) Crea 2 query di accodamento che chiamerai "SìInTabella1" e "NoInTabella2"
    6.1 per "SìInTabella1" devi importare la query "SìNonNo", trascinare il campo Testo e aggiungere una colonna con valore costante "Sì". Accodare entrambi i campi in "Tabella2"
    6.2 per "NoInTabella2" devi importare la query "Nox1", trascinare il campo Testo e aggiungere una colonna con valore costante "No". Accodare entrambi i campi in "Tabella2"
    7) Apri "Tabella2" e vedrai il risultato che cercavi.

    Sono convinto che, con un po' di maestria, si può tutto accorpare in un'unica query (di accodamento). Io ho preferito ragionare passo passo.
  • Re: Query GROUP BY

    Grande! Mi hai illuminato con "una catena di AND genera inesorabilmente No quando basta almeno un No, nei restanti casi è Sì"
Devi accedere o registrarti per scrivere nel forum
4 risposte