Oppure

Loading
21/12/12 6:56
ampeg
Salve, ho due tabelle SQL Server: [Gelati] e [Persone]

Tabella [Gelati]
----------------
IDGusto | Gusto
----------------
1 | Cioccolato
2 | Crema
4 | Pistacchio
8 | Fragola
16 | Nocciola

nella tabella Persone memorizzo la combinazione di gusti che una persona ha scelto
riferita alla tabella [Gelati]

Tabella [Persone]
(ID_Combinazione_Gusti è la somma booleana dei singoli [Gelati].[IDGusto]
--------------------------------
Nome | ID_Combinazione_Gusti
--------------------------------
Pippo | 1 (Cioccolato)
Pluto | 5 (Cioccolato + Pistacchio)
Paperino | 10 (Crema + Fragola)
Topolino | 26 (Crema + Fragola + Nocciola)
Titti | 9 (Cioccolato + Fragola)

Esempio 1
tramite query devo ottenere nomi dalla tabella Persone che nel loro gelato è compreso il "Cioccolato"

select
*
from
Persone
where
ID_Combinazione_Gusti & 1 = 1

Risultato query:

Pippo
Pluto
Titti

Esempio 2
tramite query devo ottenere i nomi dalla tabella Persone che nel loro gelato è compreso sia la "Crema" che la "Fragola"

select
*
from
Persone
where
ID_Combinazione_Gusti & 2 = 2 AND
ID_Combinazione_Gusti & 8 = 8

Risultato query:

Paperino
Topolino

Esempio 3
tramite query devo ottenere singolarmente dalla tabella Gelati gli IDGusto di gelato scelti dalla persona Topolino

select
IDGusto
from
Gelati
where
IDGusto & 26 = 1 or
IDGusto & 26 = 2 or
IDGusto & 26 = 3 or
IDGusto & 26 = 4 or
IDGusto & 26 = 5 or
IDGusto & 26 = 6 or
IDGusto & 26 = 7 or
IDGusto & 26 = 8 or
IDGusto & 26 = 9 or
IDGusto & 26 = 10 or
IDGusto & 26 = 11 or
IDGusto & 26 = 12 or
IDGusto & 26 = 13 or
IDGusto & 26 = 14 or
IDGusto & 26 = 15 or
IDGusto & 26 = 16

Risultato query:

2 (Crema)
8 (Fragola)
16 (Nocciola)


Sto procedendo correttamente ?
Posso ottimizzare qualcosa o fare in altro modo ?

Grazie.
Ultima modifica effettuata da ampeg 21/12/12 12:31
aaa