Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Sql 2 koşullu veri alma


Pluton

Öne çıkan mesajlar

Valla başlık ne kadar doğru bilemicem =) SQL'de kendimi geliştirmek adına saçma sapan işlerden bir diğeri.

Şimdi tablo yapım şöle olsun;

tablo: isimler
sütunlar: isim,tip

tip=1 (erkek isimleri) tip=2 (bayan isimleri) tip=3 (soyadlar)

isim | tip
cihan | 1
ahmet | 1
hasan | 1
leyla | 2
ceyda | 2
müge | 2
koç | 3
ince | 3
türk | 3


Şimdi efenim adamın cinsiyet seçimine göre ad ve soyad getiricem ama soyadlarda gelmesi lazım. Misal üye erkek seçti;

Cihan İnce
CiHan Türk
Hasan Koç

böle rastgele veriler gelmesi lazım, sorun şu ki; WHERE type=1 dediğimde sadece isimler geliyor. WHERE type=1 OR type=3 dediğimde bunları birleştiremiyorum. Bu olayı nasıl yaparım tek sql sorgusu ile acaba ? 31k isim arşivi var 2 sql sorgusu yapmak istemiyorum
Link to comment
Sosyal ağlarda paylaş

rastgele seçmek sorun. fakat şöyle bir sorun var, tip 1 ve 2 ye eşit olan kayıtların sayısı tip 3 e eşit olan kayıtların sayısından küçük veya eşit olmalı.

şöyle yapabilirsin, tip X istedi adam, çağırırsın. sayarsın. o kadar tane tip 3 çağırırsın, yanına koyarsın.

union yapabilirdin bu arada, ama union altalta koyar senin istediğini yapmaz tabi. sen çünkü bir field ı iki ayrı instance tan almak istiyorsun.
Link to comment
Sosyal ağlarda paylaş

şöyle yaparsın bak

SELECT i1.isim, i2.isim AS soyad FROM isimler i1
LEFT JOIN isimler i2 ON t1.tip=3
WHERE t1.tip=1 OR t1.tip=2
ORDER BY RAND()

ORDER BY RAND()'da joinli select olduğundan ambiguity oluşabilir, ORDER BY i1.RAND(), i2.RAND() gibi birşey olabilir mi bilmiyorum olursa daha güzel olur tabi gerisini halledersin artık =)
Link to comment
Sosyal ağlarda paylaş

riglous said:

select a.col1, b.col1 from
(SELECT @rownum:=@rownum+1 as rownum, t.* FROM test.table1 t, (select @rownum:=0) r where group1=1) a left join
(SELECT @rownum2:=@rownum2+1 as rownum, t.* FROM test.table1 t, (select @rownum2:=0) r where group1=2) b on a.rownum = b.rownum


Budur
Link to comment
Sosyal ağlarda paylaş

Brigand said:

row'un başına @ koyunca ne anlama geliyor
ve := ne anlama geliyor blimiyorum açıkcası

bunları birisi açıklarsa sevinirim.

bir de benim verdiğim kod olmadı mı olur gibi gelmişti bana hala da öyle geliyor dfgd


@ variable declare ettiğinde kullanılıyor. := da bildiğin atama operatörü PL-SQL için.


edit: @ t-sql'de böyleydi pl-sql için farklı bi olayı varsa bilmiyorum.
Link to comment
Sosyal ağlarda paylaş

o kadar degisken tanimlayip ugrasacagina php'de cok da buyuk olmayan random bir sayi yarat

select t1.isim, t2.isim from tablom as t1
inner join (select t2.isim from tablom) as t2 on t1.tip=t2.tip-2
limit $random_number, 1

edik: aciklama:

onemli olan inner join'deki 'on' baglaci. yukaridaki haliyle birinci tablodaki tip degiskeni 1, ikinci tablodaki 3 olan sonuclari dondurecek.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...