2016-03-31 21 views
0

Farklı fiyatlara sahip iki şirketten neredeyse aynı verilere sahip iki tablo var.Belirli bir sütundaki iki tablodan en iyi satırı alın

Düşük fiyatı olan tablonun herhangi birinden satır seçmek istiyorum.

nasıl satırları karşılaştırmak ve iki tabloda bu gibi sorgu yazdım

en iyi değeri alabilir ancak fiyat kısmen belirsizlik vardır yoktur.

select min(Price), Brand, a.Color 
from [table1] a, table2 b 
where a.BrandName = b.BrandName and a.Shape like b.Shape 
     and (a.color = b.color or a.Color is null) 

Fiyatta belirsizlik hatası alıyorum. Nasıl çözerim.

+1

Yardım etmemize yardımcı olun - lütfen tablo yapılarını, bazı örnek verilerini ve resu'yu paylaşın Bu örnek için almak istersiniz. – Mureinik

cevap

1

Eğer MIN kullanmak istersen sen UNION ile yapabilirsiniz:

SELECT min(price),brand,max(color) 
FROM (select price,brand,color FROM table1 
     UNION 
     select price,brand,'' FROM table2) 
GROUP BY brand 

Veya alternatif sizinle CASE EXPRESSION kullanabileceğiniz bir katılmak:

select CASE WHEN a.price > b.price then b.price else a.price end as min_price 
     ,a.Brand 
     ,a.Color 
from table1 a 
INNER JOIN table2 b 
ON a.BrandName=b.BrandName 
WHERE and a.Shape like b.Shape and (a.color=b.color or a.Color is null) 
+0

Bu bana başka bir yol veriyor. bana maksimum değeri veriyor. Herhangi bir PK veya FK'ye sahip değilim çünkü sadece verileri rastgele toplanıyor. – John

+0

Buradaki koşulu sadece bir p.pod John

0

Bunu deneyebilir miyim:

select 
    case when min(a.price)<min(b.price) then min(a.price) else min(b.price) end as  min_price, 
    Brand,a.Color from [table1] a, table2 b where a.BrandName=b.BrandName and a.Shape = b.Shape and a.color=b.color 
group by Brand,a.color 
    UNION 
    select 
    case when min(a.price)<min(b.price) then min(a.price) else min(b.price) end as  min_price, 
    Brand,a.Color from [table1] a, table2 b where a.BrandName=b.BrandName and a.Shape = b.Shape and a.Color is null 
group by Brand,a.color 
+0

Bu woking değil, aynı zamanda grup eklemeniz gerektiğini düşünüyorum ve minimum fiyat herhangi bir tablodan olmalıdır. – John

+0

ya da grup eklemelisiniz, sadece eklemiş olduğunuz koda dayanarak mantığı hazırladığım için grup eklemedim. cevabımı yeniden düzenleyeceğim cevabımı –

İlgili konular