+ Yanıtla
Sayfa Düzeni: 1 / 2
1 2 SonSon
Toplam 15 sonuçtan 1 ile 10 arası olanlar

Konu Başlığı: SQL Sorguda ID Setine göre sıralama

  1. #1

    SQL Sorguda ID Setine göre sıralama

    Merhaba,

    ASP ve Access veritabanı kullanıyorum.
    Aşağıdaki şekilde bir sorgum var
    Kod:
    <%setimiz="269,253,237,221,205,189,173"
    SQLbaslik ="SELECT baslik, id, csayi FROM baslik where id in (" & setimiz & ")"
    %>
    
    Set içindeki idleri bu şekilde alıyorum. İstediğim şey sıralamayı da setteki sıraya göre yapması.
    MySQL de order by field(id,"&setimiz&") şeklinde oluyormuş galiba. Fakat access de bu kod çalışmıyor.
    Order by ? Ne yapmalıyım.

  2. #2

    Re: SQL Sorguda ID Setine göre sıralama

    merhaba,

    SQL'den kayıtları rastgele bir sırada çektikten sonra ASP ile reorder etseniz?
    misal PHP'de mysql_data_seek() fonksiyonu ile eş zamanlı olarak recodset'e -iteratively- farklı bir sırada ulaşmak mümkün. ASP'de buna benzer olarak ne var bilemiyorum.

    buna alternatif bir yol olarak da recordset'i bir array'e aktarırsınız ve onu array['id'] değerleri üzerinden sizin istediğiniz dizi haline getirebilirsiniz/sıralayabilirsiniz. eğer -varsa- array arama işlemleri ile array'i sizin dizinize uygun sırada bastırabilirsiniz.

    SQL ile istediğiniz sırada getiremezseniz bu yöntemleri deneyebilirsiniz.

    kolay gelsin.
    bet3 ~web 2.0, teknoloji ve kişisel beğeniler üzerine
    blogküme ~bloglararası destek şebekesi

  3. #3

    Re: SQL Sorguda ID Setine göre sıralama

    Teşekkürler,
    ASP'de PHP'deki mysql_data_seek() gibi bir fonksiyon var mı varsa bilenler yazarsa çok sevinirim.
    Veya başka ne yapılabilir. Bir türlü bu sorunun içinden çıkamadım.

  4. #4

    Re: SQL Sorguda ID Setine göre sıralama

    setinizin azalan sıra ile gittiğini yani ORDER BY DESC'i kastetmediğinizi varsayarak, biraz kulağı tersten göstermek gibi oldu ama setimiz değişkeni içerisinde içerisinde tekrarlanabilir değerler için düzgün çalışmayabilir.

    Kod:
    Set Conn = server.CreateObject("ADODB.Connection")
    connStr =  "DRIVER={Microsoft Access Driver (*.mdb)};UID=;PASSWORD=;DBQ=D:\db.mdb"
    Conn.ConnectionString = connStr
    Conn.Open 
    
    setimiz = "269,253,237,221,205,189,173"
    Set RS = server.CreateObject("ADODB.RecordSet")
    SQL = " SELECT $1 AS oBY, baslik, id, csayi FROM baslik "
    
    tSQL = ""
    x = Split(setimiz, ",")
    For I = 0 To UBound(x)
    	If Len(tSQL)>0 Then tSQL = tSQL & " UNION "
    	tSQL = tSQL & Replace(SQL, "$1", I+1) & " WHERE id = "& x(I)
    Next
    
    If Len(tSQL)>0 Then
    	RS.Open tSQL & " ORDER BY oBY", Conn, 1
    	While Not RS.EOF
    		Response.Write "| "& RS("baslik") & " | "& RS("id") & " | " & RS("csayi") &" |<br>"
    	RS.MoveNext
    	Wend
    	RS.Close
    End If
    
    Set RS = Nothing
    Conn.Close
    Set Conn = Nothing
    
    "oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
    http://www.sipidik.com

  5. #5

    Re: SQL Sorguda ID Setine göre sıralama

    Yukarıdaki sette şans eseri azalan sıra ile gitmiş.
    onu;
    setimiz = "219,253,267,221,205,189,273" Şeklinde değiştireyim. Bu set bir örnek yani. Set normalde rastgele şekilde oluşuyor ve order by rnd(id) yle karışık sıraya alınıyor.

  6. #6

    Re: SQL Sorguda ID Setine göre sıralama

    verdiğim kodda, hangi setiniz hangi sıraya göre gidiyorsa, kayıtları o sırada getirmesi lazım.
    "oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
    http://www.sipidik.com

  7. #7

    Re: SQL Sorguda ID Setine göre sıralama

    Çok teşekkür ederim absconder, beni büyük bir dertten kurtardınız.

    Kodlar gayet güzel çalışıyor, id' ler tekrar etmediği için de bir sorun yaşamıyorum.

    tekrar çok teşekkürler

  8. #8

    Re: SQL Sorguda ID Setine göre sıralama

    yalnız koddaki SQL çok pahalı bir işlem haline gelmiş. şaşırdım açıkcası sadece işinizi görmesi yeterli değilse size tavsiyem WHERE id IN ( ... ) ile aldığınız kayıtsetini özel bir fonksiyon ile sıralamak. 200 kayıt arasından 5 kayıt seçmek için problem olmayabilir ama milyon tane kayıt arasından birkaç yüz kayıt seçmek ciddi bir problem oluşturacaktır. tabi performans ve optimizasyon kaygınız yoksa işlemcinize zeval gelmesin
    bet3 ~web 2.0, teknoloji ve kişisel beğeniler üzerine
    blogküme ~bloglararası destek şebekesi

  9. #9

    Re: SQL Sorguda ID Setine göre sıralama

    Passion, zaten kulağı tersten göstermek gibi olduğunu baştan söyledim

    UNION başlı başına bir handikap, döngü ayrı bir mesele.

    ancak, zaten access olduğundan milyonlarca kayıt ile uğraşılacağını sanmıyorum. o durumda access yanlış tercih olurdu. SQL server olanakları ile daha verimli sonuçlar alınabilir.
    "oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
    http://www.sipidik.com

  10. #10

    Re: SQL Sorguda ID Setine göre sıralama

    Aslında şu an 3000 kadar kayıt içinden 50 kayıt seçiyorum. İleride 100.000 kayıtı geçebilir. O zaman problem yaşayacağım sanırım. O zaman araştırmaya devam.

+ Yanıtla
Sayfa Düzeni: 1 / 2
1 2 SonSon

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz