Forum

Asp veritabanından ...
 
Bildirimler
Hepsini Temizle

Asp veritabanından 2 tablolu arama yapmak

7 Yazılar
2 Üyeler
0 Likes
485 Görüntüleme
(@GokhanBurucu)
Gönderiler: 22
Eminent Member
Konu başlatıcı
 

Öncelikle Merhaba;

Asp bir site tasarlamaya başladım. Access veritabanı var. Bu veritabanında haberler ve ürünler gibi tablolar var. Ben arama bölümü yapmak istiyorum arama formuna yazılacak kelime hem haberler tablosunda hemde ürünler tablosundan aranıp listelenecek ve sayfalanacak. Bi kaç deneme yaptım ama başarılı olamadım. Bakalım inş sizden gelen örnekler doğrultusunda bu sorunumu aşıcam. 

 
Gönderildi : 10/09/2011 01:31

(@RagipUNAL)
Gönderiler: 171
Estimable Member
 

Öncelikle Merhaba;

Asp bir site tasarlamaya başladım. Access veritabanı var. Bu veritabanında haberler ve ürünler gibi tablolar var. Ben arama bölümü yapmak istiyorum arama formuna yazılacak kelime hem haberler tablosunda hemde ürünler tablosundan aranıp listelenecek ve sayfalanacak. Bi kaç deneme yaptım ama başarılı olamadım. Bakalım inş sizden gelen örnekler doğrultusunda bu sorunumu aşıcam. 

Bu sorunun cevabı sql de join ile yapılabilmektedir. Fakat hangi join türünü seçeceğin senin aramada çıkacak sonuçlarına kalmış birşey. Bunun yanında union da kullanabilirsin. İki ayrı tabloyu birleştirebilirsin.

 Örneğin forum ve haber adlı tablon var. bu tablolardaki bazı kolonlar eş. örneğin başlık ve konu, burada başlık adına göre sıralayalım:

haber:

id, baslik, konu, aciklama

forum:

id, baslik, konu, aciklama

sql sorfulama kodu:

select b1.baslik, b1.konu, b1.aciklama

from forum b1

union

select b2.baslik, b2.konu, b1.aciklama

from haber b2

order by baslik asc

sonucta iki veri birleşir ve baslik kolonundaki veriler a dan z ye göre sıralanır.

 aranan kelime asp olsun ve içerisinde asp kelimesi aransın dersek;

where baslik like '%asp%' diyebiliriz.

Örnek kod tabi yanılmıyorsam böyle olacak:

select b1.baslik, b1.konu, b1.aciklama

from forum b1

union

select b2.baslik, b2.konu, b1.aciklama

from haber b2

where baslik like '%asp%'

order by baslik asc

deneyip aldgın sonucu bildirmeni bekliyorum.

 
Gönderildi : 10/09/2011 03:15

(@GokhanBurucu)
Gönderiler: 22
Eminent Member
Konu başlatıcı
 
Set aranan = Server.CreateObject("adodb.RecordSet")
sql = ""
sql = sql & "SELECT baslik From haber WHERE baslik like '%" & Request.Form("aranan") & "%' " 
sql = sql & "Union All "
sql = sql & "SELECT baslik From makale WHERE baslik like '%" & Request.Form("aranan") & "%' " 
aranan.open sql, baglanti, 1, 3
 
 
şeklinde hallettim. saolasın isteyenler olursa 2 sayfalık union örnekli arama scriptimi gönderebilirim. 
 
Gönderildi : 10/09/2011 17:14

(@RagipUNAL)
Gönderiler: 171
Estimable Member
 

güzel ve basit olmuş çözümün, ama bu şekilde sorguladığında önce haber tablosundaki başlıkları arıyor, sonrada forumdaki başlıkları arama yapmıyormu? Yani ilk çıkan sonuçlar haberlerden geliyor, haberdeki eşleşmeler bitince foruma bakıyor. Yanlış anlamadım değilmi?

Bu karışık sorgulamayı yapmaz gibi geliyor bana, çıkan sonuçlarınız nasıldır. Biraz bahsedebilirmisiniz.

 
Gönderildi : 10/09/2011 18:39

(@GokhanBurucu)
Gönderiler: 22
Eminent Member
Konu başlatıcı
 

aynen öle hocam ilk çıkan sonuç haberlerden geliyor. aslında bunu nasıl karıştırabiliriz bunuda halledersek bu başlığımız işe yarar bir başlık olucak gibi 🙂

 
Gönderildi : 11/09/2011 04:38

(@RagipUNAL)
Gönderiler: 171
Estimable Member
 

aynen öle hocam ilk çıkan sonuç haberlerden geliyor. aslında bunu nasıl karıştırabiliriz bunuda halledersek bu başlığımız işe yarar bir başlık olucak gibi 🙂

aslında ilk yazıdığım cevapta bu mevcut. Nasıl karışık listelemk istediğin birazda sana kalmış.

Örneğin Kayıt sırasına göre sonda başa gitmek istedeydik SQL kodun sonuna

ORDER BY ID DESC

kullanabiliriz. Yada bu kayıt tarihide olabilir.

ORDER BY KAYIT_TARIH

diyebiliriz. Bir deneme yap sonuçları bekliyorum.

 
Gönderildi : 12/09/2011 01:16

(@GokhanBurucu)
Gönderiler: 22
Eminent Member
Konu başlatıcı
 

hocam teşekkürler böylece bu konuya açıklık getirmiş olduk. arama scripti yaptığımız için tarihe göre gelmesi daha mantıklı tarih içinde kodumuza dediğin gibi aşağıdaki kodu ekledikmi kod tamam oluyor.

 

Set aranan = Server.CreateObject("adodb.RecordSet")

sql = ""

sql = sql & "SELECT id,baslik,aciklama,tarih,tip From haber  WHERE baslik like '%" & Request.Form("aranan") & "%' order by tarih desc;" 

sql = sql & "Union All "

sql = sql & "SELECT id,baslik,aciklama,tarih,tip From makale WHERE baslik like '%" & Request.Form("aranan") & "%' order by tarih desc;" 

aranan.open sql, baglanti, 1, 3

 

 
Gönderildi : 12/09/2011 05:24

Paylaş: