2015-07-07 12 views
5

ho una tabella come questaquery per le condizioni di tutta filari

id | item | price | vip 
---+--------+--------+----- 
0 | tv | 2000 | NULL 
1 | tv | 2500 | TRUE 
2 | camera| 3000 | NULL 
3 | camera| 3500 | TRUE 
4 | phone | 1000 | NULL 
5 | pen | 2  | NULL 

In questa tabella, ho alcune voci duplicate, perché ho bisogno di memorizzare prezzo vip. Se normale visita persona, ho bisogno di mostrare

item | price 
------+--------- 
tv | 2000 
camera| 3000 
phone | 1000 
pen | 2 

Se vip persona arriva, allora dovrei Chiedi il prezzo come

item | price 
------+----------- 
tv | 2500 
camera| 3500 
phone | 1000 
pen | 2 

L'ultima colonna è booleano.

Ho bisogno di una query per ottenere gli articoli. Si prega di aiutare per ottenere la query per questo.

+0

Perché entrambi i tag MySQL e Postgresql? – jarlh

+0

Sto usando Postgresql, ma penso che sia una cosa molto comune, la query dovrebbe essere la stessa per entrambi i tipi di database. Potrei sbagliarmi ! –

+1

Non importa se la query funziona con altri database o meno, non contrassegnare i prodotti non coinvolti. – jarlh

risposta

4

cliente normale:

select item, price 
from tablename 
where vip is NULL 

vip cliente:

select item, price 
from tablename t1 
where vip is true 
    or not exists (select 1 from tablename t2 
        where t1.item = t2.item 
        and vip is true) 
+0

Sì, funziona !! –

0

Tutto ciò che serve è una clausola WHERE

SELECT price from *** WHERE ((VarVip = true AND vip IS NOT NULL) OR (vip IS NULL)) and item = ... 

non posso provarlo, ma dovrebbe stampare il prezzo di VIP se esiste e il prezzo normale altrimenti. Se doiesn't (cosa di cui dubito) è comunque possibile aggiungere un test come questo nella clausola WHERE:

exists(SELECT price from *** where vip IS NOT NULL and item = ...) 
+0

No, questo non funzionerà, il flag di colonna "vip" non è l'unico criterio. –

+0

Vedi, per la stampa dei prezzi VIP, devo controllare che per un dato articolo vip il prezzo sia o no? Se il prezzo vip è presente, usa quel prezzo altrimenti usa il prezzo normale .. –

+1

Errore di sintassi, si suppone che sia vip È NULL ... – jarlh

Problemi correlati