Sorgu

2015-07-07 26 views
5

ben vip fiyatı saklamak gerekir çünkü bu tabloda buSorgu

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 

gibi bir tablo, bazı yinelenen girişler var var. vip kişi gelirse normal bir insan ziyareti, ben

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

göstermek gerekir, o zaman ben son sütun Boole olan

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

gibi fiyatı göstermelidir.

Ben öğeleri almak için sorguyu gerekir. Bunun için sorguyu almak için lütfen yardım edin.

+0

Neden hem MySQL hem de Postgresql etiketleri? – jarlh

+0

Ben PostgreSQL'i kullanıyorum, ama bu çok yaygın bir şey olduğunu düşünüyorum, sorgu veritabanı her türü için aynı olmalıdır. Yanılıyor olabilirim ! –

+1

Sorgu diğer veritabanlarıyla çalışıp çalışmadığı önemli değil, dahil olmayan ürünleri etiketlemeyin. – jarlh

cevap

4

Düzenli müşteri:

select item, price 
from tablename 
where vip is NULL 

vip müşteri:

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

Evet, çalışıyor düzenlenmiş !! –

0

Tek ihtiyacınız olan bir WHERE fıkra

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

ben bunu test edemez ama vardır ve normal fiyat aksi takdirde VIP fiyatı yazdırmalısınız olduğunu. o (ki sanmıyorum) doiesn't Eğer hala nerede maddede böyle bir test ekleyebilirsiniz:

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

Hayır, bu işe yaramaz, 'vip' sütun bayrağı tek kriter değildir. –

+0

See, vip fiyatları baskı için, ben belirli bir madde vip fiyata Mevcut olmadığını kontrol etmek gerekir? Mevcut vip fiyat o zaman o fiyatı diğer akıllıca kullanımı, normal fiyat kullanılır .. –

+1

sözdizimi hataları, yazım hatası işaret için NULL ... – jarlh