İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Asp ile MySql Veri Çekmede 2 Ayrı Tablodan Koşullu Sorgu Yaptırma

sempativet

0
İyinet Üyesi
Katılım
3 Mart 2005
Mesajlar
283
Reaction score
0
Merhaba, yardımınızı rica ediyorum.

MySql de 2 tablom var. İlk tablo arama, ikinci tablo icerikler.

arama Tablosu sütunları : id , arama, onay
icerikler Tablosu sütunları : id , arama_id , onay

arama tablosundaki id ile icerikler tablosundaki arama_id aynı.

Yapabildiğim bağlantı şu ;

Kod:
set rs = baglanti.execute("select * from arama WHERE onay = 1 order by rand() limit 0,30")

Bu şekilde arama tablosundan onaylanmış 30 adet rastgele veri çekiyorum.

Ancak yapmak istediğim şey, bu 30 rastgele veriyi, icerikler tablosunda kayıtlı olmayanlardan seçmek.
Arama tablosundakiler sayfalar, icerikler tablosundakiler de bu sayfalardaki içeriklerden oluşuyor.
Yapmak istediğim şey, hiç içeriği olmayan rastgele 30 onaylanmış sayfayı listeletmek...

arama tablosundaki kayıtlardan onaylanmış 30 tanesini rastgele listeleyeceğim, ama bu listede, icerikler tablosunda, arama tablosundaki id ye sahip veri olmayacak.:ıslık:


Çok daha kolay anlaşılabileceğini düşündüğüm bir örnek daha ;

forum konuları ve forum cevapları olarak iki tablomuz var,
forum konuları tablosunda id, baslık ve onay sütunları var,
forum cevapları tablosunda da id, forum_konu_idsi ve onay sütunları var,

ben 30 adet CEVAPLANMAMIŞ konuyu listeletmek istiyorum.



Anlatırken bile zorlanıyorum:eek:ha:, umarım anlatabilmişimdir. Bu sorgu için yardım bekliyorum.

Teşekkürler, saygılar.
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
60
Konum
Antalya
where alan in (1,2,3,4,5) diye bir kod var bununla yapabilirsin ama ilerde çok kasar.

Ben şu şekilde yapıyorum.

konuID, konuIsmi, konuAciklamasi, konuOnay, konuCevaplandimi

bir cevap eklendiği zaman

insert into cevap ın altına
update konu set konuCevaplandimi='e'

yazıyorum :) Böylelikle cevaplanan ve cevaplanmayanları bir sorgu ile alabiliyorum.
 

sempativet

0
İyinet Üyesi
Katılım
3 Mart 2005
Mesajlar
283
Reaction score
0
Cevabınız için teşekkür ederim.

Ancak arama tablosuna yeni bir sütun açıp, içerik eklendiğinde o sütuna true veya evet yazdırmak şu aşamada çok zor çünkü 20.000 in üzerinde arama kaydı ve 3.000 in üzerinde icerik kaydı var. Tek tek içerikli 3.000 aramaya el ile eklemem gerekir ki bu da mümkün değil...

30 tane rastgele veri çekmeyecek olsam, sadece 1 veriyi çekip içeriğini sorgulatsam şu şekilde yapardım ;

Kod:
<%
aranan_id = Request.... .... vs..

Set rs_arama = Server.CreateObject("ADODB.RecordSet")
rs_aramaSQL = "Select * FROM arama  WHERE id = "&aranan_id&" AND  onay = 1"
rs_arama.open rs_aramaSQL,Baglanti,3,3

if NOT rs_arama.eof then

Set rs_icerik= Server.CreateObject("ADODB.RecordSet")
rs_icerikSQL = "Select * FROM icerikler WHERE arama_id = "&aranan_id&" AND  onay = 1"
rs_icerik.open rs_icerikSQL,Baglanti,3,3

if rs_icerik.eof then
Response.write "Cevaplanmamış.."
else
Response.write "Cevaplanmış.."
end if

rs_icerik.Close
Set rs_icerik = Nothing

else
Response.write "Aranan sayfa kayıtlı değil.."
end if

rs_arama.Close
Set rs_arama = Nothing

Koda dikkat ederseniz, arama id sini form vs. den aldım, arama tablosunda sorgulattım, varsa, icerik tablosunda sorgulattım, içeriği varsa cevaplanmış, yoksa cevaplanmamış yazdırdım. aranan şey arama tablosunda yoksa eğer içeriklerde hiç sorgulatmadan kayıtlı değil yazdım..

Ben yapamasam da, bu işlemin tek sorgu cümlesinde yapılabileceğini biliyorum. İki ayrı tablodan aynı anda koşullu sorgu yapılabiliyor ama ben nasıl yazıldığını bilmiyorum.

arama tablosundan, içeriği olmayan 30 tane rastgele veri çekmek istiyorum...
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
60
Konum
Antalya
select * from tablo where alan in (select id from tablo2 )
 

sempativet

0
İyinet Üyesi
Katılım
3 Mart 2005
Mesajlar
283
Reaction score
0
Teşekkür ederim, Şu kod doğru mu o halde ;


set rs = baglanti.execute("select id from arama WHERE id in ("select arama_id from icerikler WHERE arama_id AND onay=1") AND onay = 1 order by rand() limit 0,30")


bu kod doğruysa, 30 tane içeriği OLAN sayfa listelemesi lazım, ben olmayanları listeletmek istediğim için nereyi değiştirmeliyim ?
 

sempativet

0
İyinet Üyesi
Katılım
3 Mart 2005
Mesajlar
283
Reaction score
0
Teşekkür ederim, Şu kod doğru mu o halde ;


set rs = baglanti.execute("select id from arama WHERE id in ("select arama_id from icerikler WHERE arama_id AND onay=1") AND onay = 1 order by rand() limit 0,30")


bu kod doğruysa, 30 tane içeriği OLAN sayfa listelemesi lazım, ben olmayanları listeletmek istediğim için nereyi değiştirmeliyim ?

Yardımınızı bekliyorum..
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst