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 il 21/12/2012 alle 13:31 |