Conteggio su query

venerdì 26 agosto 2011 - 14.11
Tag Elenco Tags  MySQL 5.5

dotnetnapo Profilo | Junior Member

Ciao a tutti,
ho una domanda su una query che non ho capito se è possibile fare...
Avendo una tabella così strutturata

1 | Verde
2 | Verde, Rosso
3 | Giallo, Nero
4 | Rosso, Nero, Verde

è possibile fare una query per contare i colori in questo modo?

3 | Verde
2 | Rosso
1 | Giallo
2 | Nero

Grazie x l'aiuto....

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao

>ho una domanda su una query che non ho capito se è possibile fare...
>Avendo una tabella così strutturata
>è possibile fare una query per contare i colori in questo modo?
La tabella in questione viola un vincolo della 1NF (prima forma normale) ovvero quello per cui non si dovrebbero mai salvare gruppi di dati in un campo.
Il campo è denormalizzato e quindi l'unica cosa che puoi fare per contare le occorrenze è usare un filtro sul contenuto del campo.
o con una LIKE (e dovrai fare una query così filtrata per ogni valore che vuoi contare) oppure trovando un metodo più complesso che trasforma il campo denormalizzato in una tabella ulteriore per ottenere una struttura simile a quella che segue:

1 | Verde
2 | Verde
2 | Rosso
3 | Giallo
3 | Nero
4 | Rosso
4 | Nero
4 | Verde

avendo questa struttura poi contare è più semplice, basterebbe raggruppare per il campo descrittivo e contare.

>Grazie x l'aiuto....
di nulla!

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Immaginavo una cosa del genere, nel modo in cui dici tu mi tocca fare una nuova tabella solo per i colori.
La mia tab andava bene per le ricerche, es. trovare tutti i capi rossi....
Bisogna trovare un espediente ci lavoro e poi faccio sapere.....

alx_81 Profilo | Guru

>Immaginavo una cosa del genere, nel modo in cui dici tu mi tocca
>fare una nuova tabella solo per i colori.
>La mia tab andava bene per le ricerche, es. trovare tutti i capi
>rossi....
>Bisogna trovare un espediente ci lavoro e poi faccio sapere.....
se usi .net potresti leggere ogni riga e fare split.. poi da .net sempre conti come meglio credi..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

renarig Profilo | Expert

Si quella struttura di tabella fa acqua.

Sei debole anche perche esposto ad errori di ortografia

Blu invece di Blù
Arancio invece di Arancione
ecc
____________________________________________
Comunque se i colori che usi non sono troppi
puoi fare semplicemente una query di uniune
fra tante sottoquery che ti cercano ogniuna
un colore con "Like"

_______________________________________________

Sotto trovi un esempio che
ti cerca e conta:
__Rosso
__Verde
__Blu oppure Blù ( con accento )

Testato con Access2003

con una tabella di Nome "Tab"
e un sol campo di nome " Col"

SELECT QQQQ.Cox AS Coxy, Count(QQQQ.Cox) AS Numy FROM ( SELECT "Rosso" AS Cox, Tab.Col AS CoN FROM Tab WHERE (((Tab.Col) Like "*Rosso*")) ) AS QQQQ GROUP BY QQQQ.Cox UNION SELECT QQQQ.Cox AS Coxy, Count(QQQQ.Cox) AS Numy FROM ( SELECT "Verde" AS Cox, Tab.Col AS CoN FROM Tab WHERE (((Tab.Col) Like "*Verde*")) ) AS QQQQ GROUP BY QQQQ.Cox UNION SELECT QQQQ.Cox AS Coxy, Count(QQQQ.Cox) AS Numy FROM ( SELECT "Blu" AS Cox, Tab.Col AS CoN FROM Tab WHERE (((Tab.Col) Like "*Blu*" Or (Tab.Col) Like "*Blù*")) ) AS QQQQ GROUP BY QQQQ.Cox ;
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5