Pluton Mesaj tarihi: Şubat 26, 2010 Mesaj tarihi: Şubat 26, 2010 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
Brigand Mesaj tarihi: Şubat 26, 2010 Mesaj tarihi: Şubat 26, 2010 31k isim arşivin varsa 1k'sı bile soyadlar olsa 30 milyon çeşit isim eder dfgdf
Pluton Mesaj tarihi: Şubat 26, 2010 Konuyu açan Mesaj tarihi: Şubat 26, 2010 işte sorun orda, olm rastgele yan yana koymam lazım 5 tane nasıl olcak fikir ver =)
Brigand Mesaj tarihi: Şubat 26, 2010 Mesaj tarihi: Şubat 26, 2010 vallaha 2 sorguda yapıver cebinden mi çıkıyo sql sorguları :-)
reyou Mesaj tarihi: Şubat 26, 2010 Mesaj tarihi: Şubat 26, 2010 eger dogru anladiysam oraya bi flag koyman gerek mesela @isSelectAll as bit = 0, daha sonra where (blabla bla and @isSelectAll = 1) OR (baska bla bla and @isSelectAll = 0) bolece birinden biri calisacakdir istedigine gore artik.
Pluton Mesaj tarihi: Şubat 26, 2010 Konuyu açan Mesaj tarihi: Şubat 26, 2010 onun için bi guide falan var mı ya yapamadım =)
Pluton Mesaj tarihi: Şubat 26, 2010 Konuyu açan Mesaj tarihi: Şubat 26, 2010 Brigand said: vallaha 2 sorguda yapıver cebinden mi çıkıyo sql sorguları :-) Sunucu parasını sen mi vericen :d
fizban Mesaj tarihi: Şubat 26, 2010 Mesaj tarihi: Şubat 26, 2010 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.
Brigand Mesaj tarihi: Şubat 26, 2010 Mesaj tarihi: Şubat 26, 2010 şö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 =)
Pluton Mesaj tarihi: Şubat 26, 2010 Konuyu açan Mesaj tarihi: Şubat 26, 2010 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
Brigand Mesaj tarihi: Şubat 26, 2010 Mesaj tarihi: Şubat 26, 2010 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
aquila Mesaj tarihi: Şubat 26, 2010 Mesaj tarihi: Şubat 26, 2010 bu yazdiklarinizi gorunce ben derste hicbisey ogrenmemisim diyorum kendi kendime.
nameless Mesaj tarihi: Şubat 26, 2010 Mesaj tarihi: Şubat 26, 2010 WHERE (type=1 OR type=3) yaparsan olması lazım.
Pluton Mesaj tarihi: Şubat 27, 2010 Konuyu açan Mesaj tarihi: Şubat 27, 2010 nameless sen olayı anlamamışın =) aquila ders hiçbişey tecrübe herşey
Prosciutto Mesaj tarihi: Şubat 27, 2010 Mesaj tarihi: Şubat 27, 2010 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.
nameless Mesaj tarihi: Şubat 27, 2010 Mesaj tarihi: Şubat 27, 2010 Pluton said: nameless sen olayı anlamamışın =) aquila ders hiçbişey tecrübe herşey evet baya yanlış anlamışım hem eahaeh
Mum_Chamber Mesaj tarihi: Şubat 28, 2010 Mesaj tarihi: Şubat 28, 2010 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.
Öne çıkan mesajlar