PDA

View Full Version : [SQL] Righe di una tabella, colonne di una select...


kingv
29-05-2008, 11:17
Non sono sicuro che sia possibile ma ho le seguenti tabelle:


UTENTE

----------
| ID |
----------
| pippo |
| pluto |
| minni |
----------


ENTITA'
----------
| mela |
| pera |
| banana |
----------

ASSOCIAZIONE

|-------------------
| 1 | pippo | mela |
|------------------
| 2 | pippo | mela |
|-------------------
| 3 | pluto | pera |
|-------------------



vorrei per ogni utente contare le occorrenze entità (che sono in numero fisso) in questo modo:

--------------------------------
| ID | MELA | PERA | BANANA |
-------------------------------|
| pippo | 2 | 0 | 0 |
-------------------------------|
| pluto | 0 | 1 | 0 |
-------------------------------|
| minni | 0 | 0 | 0 |
-------------------------------

in pratica le righe fisse della tabella entità dovrebbero diventare colonne nella select.

impossibile?

john_revelator
29-05-2008, 16:25
Su myql la sintassi è questa, dove id nel tuo caso sarebbero pippo,pluto ecc.


select id,
sum(if(entita = 'mela',1,0)) as mela,
sum(if(entita = 'pera',1,0)) as pera,
sum(if(entita = 'banana',1,0)) as banana
from associazione
group by id

kingv
29-05-2008, 16:59
uso oracle 10g, ho controllato e la sintassi è questa:

SUM( CASE ASSOCIAZIONE WHEN 'MELA' THEN 1 ELSE 0 END)

ti ringrazio moltissimo per l'idea, non avevo pensato di farlo in questo modo :)

shinya
29-05-2008, 17:19
Prova a dare un'occhiata qua:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:419593546543

oppure qua (verso fine pagina):

http://www.akadia.com/services/ora_analytic_functions.html

Sono entrambi link specifici su oracle.

kingv
29-05-2008, 22:22
@shinya: ottimi link, in particolare il secondo spiega l'utilizzo di decode() per quello che mi serve.