Forum
Ö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.
Ö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ü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.
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 🙂
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.
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