2010-02-18 39 views

cevap

11

Eğer iki ResultSet s aynı veritabanından ise, o zaman neden bunları alma sırasında bir araya getiremezsiniz? union; Örneğin. Bu o zaman senin ResultSet çıkarılan bir satır temsil edecek bir sınıfını tanımlayan ve izin equals/hashCode uygulayan önermek bir seçenek değilse

select A, B 
from C 
union 
select A, B 
from D 

Ancak eşitlik için karşılaştırılacak. Daha sonra çiftleri kaldırmak için her 'u bir Set (ör. HashSet) ekleyin.

+1

+1 ... mükemmel cevap ... çok kesin ve doğru ... Haklar olsaydı 10 kez size veririm. –

+2

UNION, bir çeşit zorlayarak çoğaltmaları kaldırır. UNION ALL, sonuç kümelerini işlevsel olarak birleştirir. Çiftler kabul edilebilirse veya iki sonuç kümesinde çakışma olmadığını biliyorsanız, UNION ALL kullanın. –

+0

@Adam: OP zaten yinelenen satırların yalnızca bir kez gösterilmek istediğini belirtti, bu yüzden neden UNION ALL'den ziyade UNION'den bahsetmiştim. – Adamski

3

Şunları yapabilirsiniz: ile

  1. "yinelenen" tanımladığınız hangi alanları kullanarak equals() ve hashCode() yöntemlerini uygulamak sütunlara tekabül özelliklere sahip bir sınıf oluşturun (let IDE size yardımcı bunların üretimi)
  2. createa bir Set (HashSet):

    Takım combinedDataSet = yeni HashSet();

  3. Yineleyin her Resultset ve inşa nesneler:

    while (rs1.next) { 
        YourClass obj = new YourClass(); 
        obj.setSomeProperty(rs.getString(1)); 
        obj.setAnotherProperty(rs.getString(2)); 
        // etc.. 
        cominbedDataSet.add(obj); 
    } 
    

    aynı yineleme rs2

için de geçerli bir yoluyla istenen sonucu alamayan tek durumda bu yapın SQL sorgusu!

+0

+1 ... .......... :) –

+0

@Bozho Sizinle iletişim kurmak istiyorum. Burada yayınlayabileceğim programlama problemim yok. Çeşitli sorularıma cevap verdiniz ve bu nedenle, kariyerim için sizden tavsiye alacak doğru kişi olduğunuzu biliyorum. Blogunuzu da kontrol ettim, ancak sizinle iletişim kurmanın bir yolunu bulamadım. Sizinle iletişim kurmak için SO kullanmak istemiyorum. Bana değerli zamanınızdan biraz zaman ayırırsan ve seninle nasıl sohbet edebilirim diye söylerseniz çok minnettar olurum. Teşekkürler. –

+1

@Yatendra Goel, belirli sorularınız varsa SO'ya sorun. Daha az özel sorularınız varsa, blogumu kontrol et (profilimde buraya bağlı) ve bana bir yorum bırakın. – Bozho

İlgili konular