Обсуждение: hiding column values for specific rows

Поиск
Список
Период
Сортировка

hiding column values for specific rows

От
Luca Ferrari
Дата:
Hi,
I don't know if this's possible but I'd like to hide column values for 
specific rows within a query. Imagine I've got a table with columns username 
and password: users(username,password). Now I'd like the user registered in 
the table to see her password, to see who is registered but not to see the 
other people passwords. For example, if the table contains:
username  | password
--------------+-------------
luca            | myPaswd
roberto       | otherPaswd
gianna        | thirdPaswd

I'd like to do a query like: "SELECT * FROM users where username=luca" 
obtaining something like:
username  | password
--------------+-------------
luca            | myPaswd
roberto       | xxxxx
gianna        | XXXXX

Is it possible to specify in the above query that all password columns that do 
not belong to selected row (username=luca) must be hidden? Anyone has an idea 
about how to implement this on the database side?

Thanks,
Luca


Re: hiding column values for specific rows

От
"A. Kretschmer"
Дата:
am  Mon, dem 13.11.2006, um 14:11:50 +0100 mailte Luca Ferrari folgendes:
> Hi,
> I don't know if this's possible but I'd like to hide column values for 
> specific rows within a query. Imagine I've got a table with columns username 
> and password: users(username,password). Now I'd like the user registered in 
> the table to see her password, to see who is registered but not to see the 
> other people passwords. For example, if the table contains:
> username  | password
> --------------+-------------
> luca            | myPaswd
> roberto       | otherPaswd
> gianna        | thirdPaswd
> 
> I'd like to do a query like: "SELECT * FROM users where username=luca" 
> obtaining something like:
> username  | password
> --------------+-------------
> luca            | myPaswd
> roberto       | xxxxx
> gianna        | XXXXX
> 
> Is it possible to specify in the above query that all password columns that do 

You can do this with a VIEW and remoke all from normal users for the
original table. Within the VIEW, you can use current_user for the
username and/or a case when ... statement for the password-column.


Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47215,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net


Re: hiding column values for specific rows

От
Bricklen Anderson
Дата:
Luca Ferrari wrote:
> Hi,
> I don't know if this's possible but I'd like to hide column values for 
> specific rows within a query. Imagine I've got a table with columns username 
> and password: users(username,password). Now I'd like the user registered in 
> the table to see her password, to see who is registered but not to see the 
> other people passwords. For example, if the table contains:
> username  | password
> --------------+-------------
> luca            | myPaswd
> roberto       | otherPaswd
> gianna        | thirdPaswd
> 
> I'd like to do a query like: "SELECT * FROM users where username=luca" 
> obtaining something like:
> username  | password
> --------------+-------------
> luca            | myPaswd
> roberto       | xxxxx
> gianna        | XXXXX
> 
> Is it possible to specify in the above query that all password columns that do 
> not belong to selected row (username=luca) must be hidden? Anyone has an idea 
> about how to implement this on the database side?
> 
> Thanks,
> Luca
> 
You could try:
select username,case when username='luca' then password else 'XXXXXX' 
end as password from users;

Note that the the username 'luca' corresponds to the user querying the 
table.