Re: problema di select [sql]
On Sun, 19 Aug 2007, Davide Prina wrote:
> Leonardo Boselli wrote:
> scusa, forse sono io, ma dalla spiegazione che hai messo non capisco
> quasi nulla.
se avessi capito bene anche io non avrei neppure postato la domanda.
> Perché non fai un esempio semplice e capibile ... utilizzando dei valori
> e indicando la struttura del db? (colonne, primary key, foreing key,
> indici). Inoltre per le colonne è meglio utilizzare nomi comprensibili
> al volo e non sigle.
ti cambio i nomi:
RID (indice, non usato)
UserName
GroupName
BossLevel
In nquesta tabella ogni riga contiene uno username e un gruppo
(esattamente il cotento di /etc/groups, per inciso).
Siccome ogni utente può appartenere a più di un gruppo e ogni gruppo può
avere più membri ci possono essere piu` righe con gli stessi valori.
quello che c'è di più è il BossLevel.
Questo è un valore (intero) che indica se la persona è utente normale
(1) responsabile (2) o supervisore (3)
quello che voglio è dato un utente (Ub) avere la lista di tutti gli utenti
che appartengono a gruppi di cui Ub fa parte ma che hanno un
BossLevel minore o uguale a quello che Ub ha in quel gruppo
esempio:
RID UserName GroupName Bosslevel
1 Primo lazy 1
2 Primo big 3
3 Primo nerd 1
4 Secondo jim 1
5 Secondo nerd 1
6 Terzo jim 2
7 Terzo big 2
8 Quarto nerd 3
9 Quarto big 2
10 Quinto jim 3
11 Quinto nerd 2
12 Sesto jim 3
se Ub="Primo" mi ritorna Primo, Secondo (nerd[Secondo]<=nerd[Primo]),
Terzo (big[Terzo]<=big[Primo]), Quarto (big[Quarto]<=big[Primo])
non mi ritorna invece Quinto in quanto nerd[Quinto]>nerd[Primo] e Primo
non ha altri gruppi in comune con Quinto e Sesto.
se scelgo secondo mi ritornerà oltre se stesso solo primo in quanto è
l'unico che ha un gruppo (nerd) con bossleverl non superiore.
terzo mi ritornerà secondo terzo e quarto
quarto mi ritorna primo secondo terzo quarto quinto
quinto invece primo secondo terzo quinto e sesto
mente se gli do sesto avrò secondo terzo quinto e sesto
>In generale puoi usare i costrutti
>
> select ...
> from Tabella1
> where Tabella1.campo1 in( select ...)
>
> select ...
> from Tabella1 as T1, (select ...) as T2
> where ...
>
> Ciao
> Davide
>
> --
> Dizionari: http://linguistico.sourceforge.net/wiki
> Sistema operativo: http://www.it.debian.org
> GNU/Linux User: 302090: http://counter.li.org
> Non autorizzo la memorizzazione del mio indirizzo su outlook
>
>
>
Reply to: