UNION ALL order by sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
AfterPost
Üye
Mesajlar: 144
Kayıt: 12 Tem 2014 10:22

UNION ALL order by sorunu

Mesaj gönderen AfterPost »

iki tabloyu tek sorguda birleştiriyor fakat satışları üstte alışları altta topluyor,
tarih sırasına göre listeleme yapmıyor order by hata verdi;
Hata:"dynamic sql error sql error code 104 token unknown" , database Firebird

Kod: Tümünü seç

IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('SELECT FATURATARIHI,GENELTUTAR,CARIADI,CARIID FROM SATIS');
IBQuery1.SQL.Add('UNION ALL');
IBQuery1.SQL.Add('SELECT FATURATARIHI,GENELTUTAR,CARIADI,CARIID FROM ALIS');
IBQuery1.SQL.Add('ORDER BY FATURATARIHI');//hata burada
IBQuery1.Open;
Dosya ekleri
hata.png
hata.png (3.34 KiB) 832 kere görüntülendi
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: UNION ALL order by sorunu

Mesaj gönderen mkysoft »

UNION ile sanırım ORDER BY kullanılamıyordu, kullanılsa bile kendi içinde sıralayacaktır. Emin olmamakla birlikte HAVING komutuyla veya VIEW oluşturarak deneyiniz.
AfterPost
Üye
Mesajlar: 144
Kayıt: 12 Tem 2014 10:22

Re: UNION ALL order by sorunu

Mesaj gönderen AfterPost »

kendi açtığım konuyu kendim kapatayım doğrusunu buldum , belki birilerinin işine yarar diye yazmak istedim
buyurun

Kod: Tümünü seç

IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('SELECT * FROM (SELECT FATURATARIHI,GENELTUTAR,CARIADI,CARIID FROM SATIS UNION ALL SELECT FATURATARIHI,GENELTUTAR,CARIADI,CARIID   FROM ALIS)');
IBQuery1.SQL.Add('order BY FATURATARIHI');

IBQuery1.Open;
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: UNION ALL order by sorunu

Mesaj gönderen yusuf simsek »

@AfterPost cevabı yazmış, ben de küçük bir not ekleyeyim...

UNION kullanılan sorgularda ORDER BY yapabilmek için üst bir sorgu oluşturmak gerekir...

Kod: Tümünü seç

SELECT Tipi, Adi, Soyadi
FROM
(
     SELECT 'Cari' AS Tipi, CariId AS ID, CariAdi as Adi,  CariSoyadi AS Soyadi
     FROM TabloCari
     
     UNION ALL
     
     SELECT 'Personel' AS Tipi, PerId, PerAdi, PerSoyadi
     FROM TabloPersonel
) AS Sorgu
ORDER BY Adi
İç sorguda verdiğimiz ALIAS ( as Adi ) Üst sorgumuzda ki alan adını oluşturmaktadır... Artık yeni alan adımız Adi dır.

UNION sorguda dikkat etmemiz gereken nokta, iç sorgularda ki tüm Alan Sayılarının eşit olmasıdır...
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Cevapla