iliskili sql'ler

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ı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

iliskili sql'ler

Mesaj gönderen cuneyt22 »

arkadaslar benim 2 tablom var bu tablolardaki ortak alanlar test_no ben birinci tabloda o test_no yu alarak 2. tabloda kac adet test kullanilmis onu bulmak istiyorum.yani 1.tabloda test_ismi ve test_no var 2.tabloda bu test_nodan kac adet kullanildigini bulmak istiyorum sonucuda 1.tablodaki test_ismi ni ve 2.tabloda kac adet test_no kullanilmis ise bunlarin sonuclarini gridde gostermek istiyorum.. ancak bunu yaptigimda sadece birinin sonucunu bulabiliyorum.. tum testleri listeleyemiyorum..2 adet query kullaniyorum acaba bu is tek query ile yapilabilirmi yada nasil yapabilirim...
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Tam anlayamadım aslında sonuzu biraz daha açıklasanız belki daha iyi yardımcı olabiliriz. Ama anladığım kadarı ile sorununuzu OUTER JOIN çözülebilir.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Sitenin Veritabanı notlarındaki kısımdan SQL'e giriş kısmını bol bol okuyunuz.

Kolay gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Öncelikle sorunuzu programlama forumuna sormuşsunuz. Bu tabi ki yanlış olmuş. Veritabanı forumuna taşıdım... Bundan sonra dah adikkatli olursak düzenli bir mesaj arşivimiz olur.
Ayrica veritabanı sorusu sorarken hangi veritabanını kullandıgınızı da mutlaka belirtmenizde fayda var....

gelelim sorunuza

Kod: Tümünü seç

Select T1.TEST_ISMI,
(Select cont(*) from TABLO2 as T2 where T2.TEST_NO=T1.TEST_NO) as TEST_ADEDI
from TABLO1 as T1
order by T1.TEST_ISMI
bu kodun anladığım kadarı ile işinizi görmesi lazım...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Mesaj gönderen cuneyt22 »

hocam yazdiginiz query hata veriyor.. ben oracle kullaniyorum..daha aciklayici olmasi icin... 1.tablomda TEST_ISMI,TEST_NO var 2.tabloda ise kisiler icin kullanilmis testler var ve bu testler TEST_NO'ya gore veriliyor..yani bu 2.tablodan her bir TEST_NO dan kac adet kullanilmis onu bulmak istiyorum.. istatistik icin...fahrettin abinin gonderdigi kod hata veriyor..sag parantez eksik diyor ama eksik degil
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Mesaj gönderen cuneyt22 »

fahrettin abi allah razi olsun. o query isimi gordu..uzerinde biraz duzeltme yaptim ve oldu..ama simdi ben bir tablodan daha eklemek istiyorum 3.bir tablo var.. bu tablo ile 2.tabloda ID diye bir alan ortak.. olay soyle 1.tabloda TEST_NO,TEST_ISMI 2.tabloda ID,TEST_NO 3.tablodada ID,NUMUNE_ALMA_ZAMANI var...simdi kisi bilgileri 3.tabloda tutuluyor.ID numarasi ve NUMUNE_ALMA_ZAMANI var(ISTEK Tablosu).. 2.tabloda bu kisiye ait ID,TEST_NO var (HIZMETLER tablosu) 1.tablodada Test_no,TEST_ISMI var(HIZMETISIMLERI).. yapmak istedigim 3.tablodaki NUMUNE_ALMA_ZAMANI ni kullanarak o tarihte kac adet test_no ve test_ismi kullanilmis onu bulmak istiyorum..
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

işinizi görmesine sevindim... İlk query'de count yerine cont yazmışım muhtemelen hata oydu.
Neyse...

yeni sorunuza yine anladigim kadari ile soyle bir cevap verebiliriz sanıyorum....

Kod: Tümünü seç

Select T1.TEST_ISMI, count(*) as ADET
from TABLO1 as T1,TABLO2 as T2, TABLO3 as T3 
where T1.TEST_NO=T2.TEST_NO and T2.ID=T3.ID and T3.NUMUNE_ALMA_ZAMANI='25.07.2004'
group by T1.TEST_ISMI
order by T1.TEST_ISMI
Madem Oracle kullanıyorsanız aşağıdaki kod aznnedersem Oracle'da da çalışacaktır. (Sybase'de çalışıyor :) )... Farklı bir bakış açısıyla aynı sonucun alınmasına b.r örnek....

Kod: Tümünü seç

Select SUB_QRY.TEST_ISMI, count(*) as ADET
from (Select T1.TEST_ISMI
from TABLO1 as T1,TABLO2 as T2, TABLO3 as T3 
where T1.TEST_NO=T2.TEST_NO and T2.ID=T3.ID and T3.NUMUNE_ALMA_ZAMANI='25.07.2004') as SUB_QRY
group by SUB_QRY.TEST_ISMI
order by SUB_QRY.TEST_ISMI
Anlaşılacağı üzere NUMUNE_ALMA_ZAMANI='25.07.2004' satırı örnek bir tarih kısıtlaması....
Kolay gelsin...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Cevapla