Query GROUP BY

di Anonimizzato11059 il
4 risposte
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

  • 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?
  • 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
  • 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.
  • 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