Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Sıralama
#1
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.
Cevapla
#2
Ben sorunuzu tam olarak anlayamadım. TR veya NT1 ilk sıraya gelsin ne demek?
NT1 Fieldin adı, TR ise Fieldin değeri.
Yeni Nesil Yazılımcı
Linkedin: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Blog adresim: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#3
(09-01-2017, Saat: 09:29)barisatalay Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBen 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.
Cevapla
#4
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;
Delphi Can'dır!
WWW
Cevapla
#5
Cevap kesmemiş
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#6
(09-01-2017, Saat: 16:44)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlCevap kesmemiş
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol


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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
İ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.
Cevapla
#7
Bug 
(09-01-2017, Saat: 19:41)Dostk Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(09-01-2017, Saat: 16:44)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlCevap kesmemiş
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol


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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
İ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 challanges is managing change.
Cevapla
#8
Eğer MSSQL kullanılıyor ise MSSQL de UNION ALL kullanımında ORDER BY komutuna sadece son satırda izin verir.. 
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol ile de halledilebilir ama benim tavsiyem Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol subQuery e göre performansı biraz daha iyi.
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#9
Merhaba,

SQL kodunu aşağıdaki gibi yazmanız yeterli:

SELECT * FROM URUNLER
ORDER BY 
  CASE
    WHEN Notlar = 'TR' THEN 1
    WHEN Notlar = 'NT1' THEN 2
    ELSE 3
  END, 
  Notlar
Bu şekilde 'TR' olanlar 1. sırada, 'NT1' olanlar ikinci sırada, diğerleri de alfabetik olacak. 

İyi çalışmalar
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Mysql Büyükten Küçüğe Sıralama Sorunu hakanharbeli 4 172 25-04-2018, Saat: 08:26
Son Yorum: yhackup
Video Sıralama Algoritmaları savasabd 18 1.474 07-12-2017, Saat: 15:12
Son Yorum: Abdullah ILGAZ



Konuyu Okuyanlar: 1 Ziyaretçi