Yorumları: 123
Konuları: 51
Kayıt Tarihi: 07-11-2016
Rep Puanı: 66
Başlangıç
08-01-2017, Saat: 23:49
(Son Düzenleme: 08-01-2017, Saat: 23:49, Düzenleyen: Dostk.)
Selamlar, Db'den verileri tarihe ve sonrasında sıra numarasına göre listeliyorum fakat ayrıca (TR) veya (NT1) ilk sırada gelecek şekilde nasıl yapabilirim?
Close;
SQL.Clear;
SQL.Add('Select * From URUNLER Where NOTLAR IN(:NT1, :NT2)');
SQL.Add('And URUNADIADI Like ' + QuotedStr('%' + TSeach.Text + '%'));
SQL.Add('And TARIH BETWEEN :TRH1 And :TRH2 Order By TARIH ASC, SIRANO');
ParamByName('NT1').AsString := 'TR';
ParamByName('NT2').AsString := 'HB';
ParamByName('TRH1').AsDate := StrToDate(ComboDateBasla.Text);
ParamByName('TRH2').AsDate := StrToDate(ComboDateBitis.Text);
Prepared := True;
Open;
Hayat bazen güzel olabiliyor.
Yorumları: 54
Konuları: 8
Kayıt Tarihi: 26-09-2016
Rep Puanı: 3.139
Uzman
Ben sorunuzu tam olarak anlayamadım. TR veya NT1 ilk sıraya gelsin ne demek?
NT1 Fieldin adı, TR ise Fieldin değeri.
Yorumları: 123
Konuları: 51
Kayıt Tarihi: 07-11-2016
Rep Puanı: 66
Başlangıç
(09-01-2017, Saat: 09:29)barisatalay Adlı Kullanıcıdan Alıntı: Ben sorunuzu tam olarak anlayamadım. TR veya NT1 ilk sıraya gelsin ne demek?
NT1 Fieldin adı, TR ise Fieldin değeri.
Selam, iki tarih arasında listeleme yaparken TR olanların Order By ile listelemede üste HB olanlar ise sıralamada alta olacak.
Close;
SQL.Clear;
SQL.Add('Select * From URUNLER Where NOTLAR IN(:NT1, :NT2)');
SQL.Add('And URUNADIADI Like ' + QuotedStr('%' + TSeach.Text + '%'));
SQL.Add('And TARIH BETWEEN :TRH1 And :TRH2 Order By TARIH ASC, SIRANO');
ParamByName('NT1').AsString := 'TR';
ParamByName('NT2').AsString := 'HB';
ParamByName('TRH1').AsDate := StrToDate(ComboDateBasla.Text);
ParamByName('TRH2').AsDate := StrToDate(ComboDateBitis.Text);
Prepared := True;
Open;
Umarım anlatabilmişimdir.
Hayat bazen güzel olabiliyor.
Yorumları: 123
Konuları: 51
Kayıt Tarihi: 07-11-2016
Rep Puanı: 66
Başlangıç
09-01-2017, Saat: 19:41
(Son Düzenleme: 09-01-2017, Saat: 19:43, Düzenleyen: Dostk.)
(09-01-2017, Saat: 16:44)yhackup Adlı Kullanıcıdan Alıntı: Cevap kesmemiş
http://www.delphiturkiye.com/forum/viewt...=2&t=36457
Selamlar; Ne demek istediğinizi ve amacınızı anlayamadım delphican konuya cevap yazılmadan önce delphitürkiye ye zaten konuyu açmıştım kaldı ki bu forma konu açtım diye farklı bir forma konu açılamaz diye bir şey mi var? lütfen gereksiz yere polemik yaratmayın
Selam.
ERROR: ORDER BY clause should come after UNION ALL not before'. Process Siparis.exe (4908)
Hatası alıyorum.
(09-01-2017, Saat: 16:31)DelphiCan Adlı Kullanıcıdan Alıntı: Merhaba,
İki farklı SQL cümle sonucu Union ile birleştirerek yapılabilir.
Close;
SQL.Clear;
SQL.Text :=
'Select * From URUNLER Where NOTLAR = :NT1 And URUNADIADI Like :ARA And TARIH BETWEEN :TRH1 And :TRH2 Order By TARIH ASC, SIRANO'+ #13#10
+ 'union all' + #13#10 +
'Select * From URUNLER Where NOTLAR = :NT2 And URUNADIADI Like :ARA And TARIH BETWEEN :TRH1 And :TRH2 Order By TARIH ASC, SIRANO';
ParamByName('ARA').AsString := QuotedStr('%' + TSeach.Text + '%');
ParamByName('NT1').AsString := 'TR';
ParamByName('NT2').AsString := 'HB';
ParamByName('TRH1').AsDate := StrToDate(ComboDateBasla.Text);
ParamByName('TRH2').AsDate := StrToDate(ComboDateBitis.Text);
Prepared := True;
Open;
Hayat bazen güzel olabiliyor.
Yorumları: 117
Konuları: 6
Kayıt Tarihi: 27-08-2016
Rep Puanı: 884
Acemi
09-01-2017, Saat: 22:48
(09-01-2017, Saat: 19:41)Dostk Adlı Kullanıcıdan Alıntı: (09-01-2017, Saat: 16:44)yhackup Adlı Kullanıcıdan Alıntı: Cevap kesmemiş
http://www.delphiturkiye.com/forum/viewt...=2&t=36457
Selamlar; Ne demek istediğinizi ve amacınızı anlayamadım delphican konuya cevap yazılmadan önce delphitürkiye ye zaten konuyu açmıştım kaldı ki bu forma konu açtım diye farklı bir forma konu açılamaz diye bir şey mi var? lütfen gereksiz yere polemik yaratmayın
Selam.
ERROR: ORDER BY clause should come after UNION ALL not before'. Process Siparis.exe (4908)
Hatası alıyorum.
(09-01-2017, Saat: 16:31)DelphiCan Adlı Kullanıcıdan Alıntı: Merhaba,
İki farklı SQL cümle sonucu Union ile birleştirerek yapılabilir.
Close;
SQL.Clear;
SQL.Text :=
'Select * From URUNLER Where NOTLAR = :NT1 And URUNADIADI Like :ARA And TARIH BETWEEN :TRH1 And :TRH2 Order By TARIH ASC, SIRANO'+ #13#10
+ 'union all' + #13#10 +
'Select * From URUNLER Where NOTLAR = :NT2 And URUNADIADI Like :ARA And TARIH BETWEEN :TRH1 And :TRH2 Order By TARIH ASC, SIRANO';
ParamByName('ARA').AsString := QuotedStr('%' + TSeach.Text + '%');
ParamByName('NT1').AsString := 'TR';
ParamByName('NT2').AsString := 'HB';
ParamByName('TRH1').AsDate := StrToDate(ComboDateBasla.Text);
ParamByName('TRH2').AsDate := StrToDate(ComboDateBitis.Text);
Prepared := True;
Open;
"
Db'den verileri tarihe ve sonrasında sıra numarasına göre listeliyorum" demişsiniz ama veritabanının türü nedir ?
Size cevap olarak verilen SQL kodunu herhangi bir SQL client programında test ettiniz mi ?
Gelen hata mesajını anlamaya, yorumlamaya çalıştınız mı ?
Google'da "ORDER BY clause should come after UNION ALL not before" hata mesajını aratıp, çıkan sonuçları hiç incelediniz mi ?
Belki beni de yanlış anlayacaksınız ama yine yazmadan edemedim.
One of the major software engineering challenges is managing change.
Yorumları: 304
Konuları: 20
Kayıt Tarihi: 26-09-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.967
Uzman
Eğer MSSQL kullanılıyor ise MSSQL de UNION ALL kullanımında ORDER BY komutuna sadece son satırda izin verir..
SubQuery ile de halledilebilir ama benim tavsiyem
Common Table Expressions subQuery e göre performansı biraz daha iyi.
Amatör Küme Bilgisayar Programcısı
Yorumları: 120
Konuları: 3
Kayıt Tarihi: 10-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.701
Programcı
10-01-2017, Saat: 09:56
(Son Düzenleme: 10-01-2017, Saat: 10:44, Düzenleyen: DelphiCan.)
Merhaba,
SQL kodunu aşağıdaki gibi yazmanız yeterli:
[Ars=delphi]SELECT * FROM URUNLER
ORDER BY
CASE
WHEN Notlar = 'TR' THEN 1
WHEN Notlar = 'NT1' THEN 2
ELSE 3
END,
Notlar[/ars]
Bu şekilde 'TR' olanlar 1. sırada, 'NT1' olanlar ikinci sırada, diğerleri de alfabetik olacak.
İyi çalışmalar