|
|
#1 (permalink) |
|
Üyelik Tarihi: 03.06.2001
Yer: Denizli
Yaş: 28
Mesaj: 214
|
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 & ")"
%>
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 (permalink) |
|
Üyelik Tarihi: 12.06.2000
Yer: ankara
Mesaj: 1,977
|
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 ~izlenimsel betimlemeler blog kardeşliği ~blogger en asil duygunun insanıdır fotoğrafya |
|
|
|
|
|
#4 (permalink) |
|
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,873
|
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 (permalink) |
|
Üyelik Tarihi: 03.06.2001
Yer: Denizli
Yaş: 28
Mesaj: 214
|
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 (permalink) |
|
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,873
|
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 |
|
|
|
|
|
#8 (permalink) |
|
Üyelik Tarihi: 12.06.2000
Yer: ankara
Mesaj: 1,977
|
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 ~izlenimsel betimlemeler blog kardeşliği ~blogger en asil duygunun insanıdır fotoğrafya |
|
|
|
|
|
#9 (permalink) |
|
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,873
|
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 |
|
|
|
Zoque'a hoşgeldiniz!