Sql sorgu bire bir aynı degerler varsa gelsin

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Sql sorgu bire bir aynı degerler varsa gelsin

Mesaj gönderen musti »

s.a
bir sql sql sorugusu için ugrastim ama yapamadım yardımcı olurmusunuz.

2 Tablom var. alan adları aynı 2 tane de alan adım var ( aslında 2 den çok alan var ama bizi ilgilendiren 2 alan)
istedigim sonuç Tablo bir ve tablo ikideki bütün bilgiler aynı iste tablo birdeki alan 1 distinct olarak gelmesi
tablo1
alan1 alan2
1 *** A
1 *** B
1 *** C
2 *** A
2 *** B
2 *** C
3 *** A
4 *** A



tablo2
alan1 alan2
1 *** A
1 *** B
1 *** C
2 *** A
3 *** A


Sonuc olarak
1
3

olarak cıkmasını nasıl yapabilirim.

inner joın denedim 1,2,3 geldi oysa 2 deki bir alan tablo 2 de yok gelmemsi lazım

left join le (hepsi gelsin nullari kaldirayim dedim ) birlikte where alan2 is not null dedim yine olmadı
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: Sql sorgu bire bir aynı degerler varsa gelsin

Mesaj gönderen Hakan Can »

Şuna benzer bir SQL cümlesi olabilir:

Kod: Tümünü seç

SELECT
  T1.ALAN1
FROM TABLO1 T1
  INNER JOIN TABLO2 T2 ON T2.ALAN1 = T1.ALAN1 AND T2.ALAN2 = T1.ALAN2
  INNER JOIN
   (
    SELECT
      ALAN1, COUNT(*) AS KAYIT_SAYISI
    FROM TABLO1
    GROUP BY ALAN1
   ) T3 ON T3.ALAN1 = T1.ALAN1
  INNER JOIN
   (
    SELECT
      ALAN1, COUNT(*) AS KAYIT_SAYISI
    FROM TABLO2
    GROUP BY ALAN1
   ) T4 ON T4.ALAN1 = T1.ALAN1
GROUP BY T1.ALAN1
HAVING COUNT(T1.ALAN1) = AVG(T3.KAYIT_SAYISI) AND COUNT(T1.ALAN1) = AVG(T4.KAYIT_SAYISI)
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Re: Sql sorgu bire bir aynı degerler varsa gelsin

Mesaj gönderen musti »

Teşekkürler ama
Count ile bu cozülemez çünkü Tablo 1 de alan 5 adet terkrar edebilir ama tablo ikide birinci alan tekrar edebilir ama ikinci alan bir tanedir.yani alan 1 e göre bir tanedir.
Dedim yazmadan önce dedim bir deniyeyim, aldım denedim baktım sonuç doğru
alla alla dedim olmaması lazım bir daha denedim baktım sonuç yine doğru
inceleyim anlayım dedim avg ile bir bag kuramadım. inner join icine select ile bir bağ kuramadı.
ama sonuc doğru
teşekürler :bravo:

vaktin oldugu zaman mantıgını anlatsan da bir seyler daha öğrensek diyecem ama uTanıyorum :oops:
Cevapla