left join'de subquery (nerde firebird'cü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.
iqprog

left join'de subquery (nerde firebird'cüler?)

Mesaj gönderen iqprog »

select * from a
left join (select id2, sum(x) x form b group by id2) as b on id2=id

böyle bir sql firebirdde nasıl yazılır. bu mysql'de çalışıyor mesela.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Firebird 2.0 da muhtemelen calısacaktır
ÜŞENME,ERTELEME,VAZGEÇME
iqprog

bu kötü oldu işte

Mesaj gönderen iqprog »

bu kötü oldu işte,

trigger, sp falam mysql5'de çıkacak diye bekledik, onda çıktı.

işimiz görülsün ücretsiz diye fb kullanmaya başladık şimdi aynı hikayeler bunda da olmaya başladı.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
denemedim ama şöyle birşey olmazmı?

Kod: Tümünü seç

select a.*, sum(b.x) from a
left join b on b.id2=a.id
sp ilede yapılabilir
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
iqprog

group by olmadan bu şekilde sum yemez

Mesaj gönderen iqprog »

group by olmadan bu şekilde sum yemez
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

peki sp olarak yapılsa olmazmı?
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
iqprog

sp'de de sonuçta sql yazmayacak mısın?

Mesaj gönderen iqprog »

sp'de de sonuçta sql yazmayacak mısın?

orada da çalışmaz, sql aynı sql , veritabanı aynı veritabanı nerede yazarsan yaz.

ama sp'de nasıl bir şey yazmaktan bahsettiğini açarsan belki başka birşeyden bahsediyorsundur.

Bende olay şu
sipariş_başlık, sipariş_detay dosyası var.

sipariş_başlık
ID Tarih ... olsun,

sipariş_detay
Başlık_ID Adet ... olsun,

ben sonuçta şunu almak istiyorum
ID Tarih Sum(Adet)
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

şöyle bişi

Kod: Tümünü seç

for
   select id,tarih from siparisbaslik
  into :out_id, out_tarih
do
begin
  select sum(adet) from siparis_detay
  where baslik_id=:out_id
  into :out_toplam
  suspend
end
kodları burda yazdım yani elden geçirmen gerek.
bu şekilde yapabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
sahinemrah44
Üye
Mesajlar: 13
Kayıt: 21 Nis 2004 10:42
Konum: Malatya

Mesaj gönderen sahinemrah44 »

aşağıdaki kod sanırım işini görecek.

Kod: Tümünü seç

SELECT 
FIRMA_ADI

,(SELECT COALESCE(SUM(NET_URETIM),0) FROM AMBAR
 WHERE URETIM_EMRI.uretim_emri=AMBAR.uretim_emri)AS NET_AMBAR

FROM URETIM_EMRI
iqprog

mecbur böyle yaptık

Mesaj gönderen iqprog »

mecbur ben de öyle yaptım ama böyle bir kodun sorumdaki sqlden daha yavaş çalışacağını düşünüyorum. üstelik bir tek saha değil üç tane ayrı saha olacak bu iş için. böyle olunca daha da yavaş olacaktır sanırım. neyse şimdilik böyle yapcaz. ama hiç sevmem kayıt bazında subquery yazmayı büyük verilerde kasılıyor. saol

SELECT
FIRMA_ADI
,(SELECT COALESCE(SUM(NET_URETIM),0)
,(SELECT COALESCE(COUNT(NET_URETIM),0)
,(SELECT COALESCE(SUM(BRUT_URETIM),0)
FROM AMBAR
WHERE URETIM_EMRI.uretim_emri=AMBAR.uretim_emri)AS NET_AMBAR

FROM URETIM_EMRI
Kullanıcı avatarı
sahinemrah44
Üye
Mesajlar: 13
Kayıt: 21 Nis 2004 10:42
Konum: Malatya

Mesaj gönderen sahinemrah44 »

evet kasılma konusunda haklısın. fakat çok farklı denemeler yaptım farklı kodlarla en hızlısı bu çıktı daha falza geliştiremedim. hatta formu incelediysen bu sorun ile ilgili bir mesajım var orada sql kodunu inceleye bilirsin tablolarımda biraz büyük kasıyor biraz zaman bulabilirsem biraz daha kurcalıyacağım.
İyi çalışmalar.
iqprog

başka bir yol daha var

Mesaj gönderen iqprog »

başka bir yol daha var, bir de onu dene.

o da şudur.

subqueryi bir view olarak oluştur ve esas sqlinde bu viewi kullan.

anladın mı?

hız farkını bir dene bakalım ne çıkacak?

ben de çok veri olmadığı için test edemiyorum. senin test etmen çok basit olacaktır.
Kullanıcı avatarı
sahinemrah44
Üye
Mesajlar: 13
Kayıt: 21 Nis 2004 10:42
Konum: Malatya

Mesaj gönderen sahinemrah44 »

deneylim bakalım şimdi biraz işim var test ettikten sonra yazarım buraya...
Kullanıcı avatarı
sahinemrah44
Üye
Mesajlar: 13
Kayıt: 21 Nis 2004 10:42
Konum: Malatya

Mesaj gönderen sahinemrah44 »

merhaba view olarak denedim yapığım işlemler şöyle;
1-view oluşturmak için programda kullanılmış olduğum Sql kodunu çalıştırarak bir memo alnına yönledirdim ve oluşan Sql kodunu kopyaladım.
2- bu kodu ibexpert programında view(Rapor) oluşturarak hiç bir değişiklik yapmadın view mı oluşturdum.
3-programda yeni bir button ekleyerek ibqueryde Rapor(view) kodunu hazıladım.
4-ardından ben şunda kullanılan Sql kodu çalıştırdım yaklaşık 10-12 sn sonuç döndü lakin ibqurey kapatmak istediğimde yaklaşık 2 dakikada zor kapattı.
5- bu seferde rapor(view) çağırdım yaklaışık 2-3 dakikada sonuç döndü fakat ondada aynı şey oldu ibquery kapatmam 1-2 dakika sürdü.
sonuç yoruma açık.
unutmadan sistemin özellikleri 1.5 gb ram,p4 3.2,15.000 Rpm Scsi Hdd
iqprog

enteresan

Mesaj gönderen iqprog »

kapatırken neden yavaş kapanıyor anlamadım, cart diye kapanırlar bunlar ama.

view sqlinde gruplama yaptığın sahaya göre indeks var mı?
Cevapla