• 18-05-2009, 12:44:25
    #1
    Merhaba arkadaşlar.

    Ben yaklaşık 80 k 'lık içerik yüklü tablom var tablomdaki verilerin id sıralarını karıştırarak yeni bir tabloya kopyalamak istiyorum.

    Bunu tek tek olarak curl ile yapabiliyorum fakat birden yapabilme şansım var mı ?
  • 18-05-2009, 12:48:52
    #2
    Üyeliği durduruldu
    karıştırmak derken, ne yapmak istiyorsunuz tam olarak?
  • 18-05-2009, 12:49:09
    #3
    select * from tablo order by rand de
    sonrada gelen verileri yeni tabloya ekle
  • 18-05-2009, 13:02:15
    #4
    erkutarhan adlı üyeden alıntı: mesajı görüntüle
    select * from tablo order by rand de
    sonrada gelen verileri yeni tabloya ekle
    hocam 80 bin idli tabloyu bu sekilde kopyala/yapıştır mantıgıile yapabilecek bir bilgisayara sahip değilim bu azar azar yapmakta çok meşakatli olur.


    @sdemirkeser hocam benim 2 adet veritabanım var.
    Bunlar
    r10 ve r11

    r10'un içinde 80 k lık bir veri var. Ben bu verileri r11 adlı veritabanına kopyalayacağım fakat kopyalarken rand mantıgını kullanmak istiyorum yani r10'da @sdemirkeser'in bilgiri id=454 te kayıtlı r11 de bunun 77454. (sadece örnek bu 9874 te olabilir) id ile kayıt olmasını istiyorum.

    umarım anlatabildim.
  • 18-05-2009, 13:09:55
    #5
    Üyeliği durduruldu
    Bemica adlı üyeden alıntı: mesajı görüntüle
    hocam 80 bin idli tabloyu bu sekilde kopyala/yapıştır mantıgıile yapabilecek bir bilgisayara sahip değilim bu azar azar yapmakta çok meşakatli olur.
    @sdemirkeser hocam benim 2 adet veritabanım var.
    Bunlar
    r10 ve r11
    r10'un içinde 80 k lık bir veri var. Ben bu verileri r11 adlı veritabanına kopyalayacağım fakat kopyalarken rand mantıgını kullanmak istiyorum yani r10'da @sdemirkeser'in bilgiri id=454 te kayıtlı r11 de bunun 77454. id ile kayıt olmasını istiyorum.
    umarım anlatabildim.
    eğerki kod yazarak yapmak istemiyorum derseniz çok fazla rand olmayacak aslında bir mantık çerçevesinde de yapilabilir şöyleki;

    1. seçenek en pratigi tablolarin id lerini ters çevirebilirsiniz

    küçük rakamlarla konuşalım 1,2,3,4,5 id li kaydınız olsun en son id bu durumda 5 tir

    tüm id leri calisma alanımızın dışına taşıyalım;
    update tablo set id = id + 5
    id lerimiz 6,7,8,9,10 gibi oldu

    daha sonra id leri ters çevirelim. en büyük id miz artık 10 idi
    update tablo set id = 11 - id);
    bu durumda id lerimiz şu şekilde olmuş olur.

    5,4,3,2,1


    diğer bir alternatif olarak @erkutarhan dedigi gibi de yapabilirsiniz rand ile.

    ama bunda php kodu yazmaniz şart;
  • 18-05-2009, 13:20:29
    #6
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    eğerki kod yazarak yapmak istemiyorum derseniz çok fazla rand olmayacak aslında bir mantık çerçevesinde de yapilabilir şöyleki;
    1. seçenek en pratigi tablolarin id lerini ters çevirebilirsiniz
    küçük rakamlarla konuşalım 1,2,3,4,5 id li kaydınız olsun en son id bu durumda 5 tir
    tüm id leri calisma alanımızın dışına taşıyalım;
    update tablo set id = id + 5
    id lerimiz 6,7,8,9,10 gibi oldu
    daha sonra id leri ters çevirelim. en büyük id miz artık 10 idi
    update tablo set id = 11 - id);
    bu durumda id lerimiz şu şekilde olmuş olur.
    5,4,3,2,1
    diğer bir alternatif olarak @erkutarhan dedigi gibi de yapabilirsiniz rand ile.
    ama bunda php kodu yazmaniz şart;
    hocam ben zaten php kodu ile yapmak istiyorum.
    aslında sizin verdiğiniz örneklede olabilir mantık tam benim istediğim gibi ama büyük oluncada açıkçası korkuyorum bir hata yaparım diye.

    Bana php kodu yapılmaıs gereken mantıgı söyleriniz ben kodları yazarım.
  • 18-05-2009, 13:53:45
    #7
    Üyeliği durduruldu
    Bemica adlı üyeden alıntı: mesajı görüntüle
    hocam ben zaten php kodu ile yapmak istiyorum.
    aslında sizin verdiğiniz örneklede olabilir mantık tam benim istediğim gibi ama büyük oluncada açıkçası korkuyorum bir hata yaparım diye.
    Bana php kodu yapılmaıs gereken mantıgı söyleriniz ben kodları yazarım.
    verdigim örnekte limitlerle hareket ederseniz parça parça işlem yapar sorun yaşamazsınız.

    kod yazarak ise @erkutarhan in dedigi gibi

    select * from tablo order by rand() limit 1

    dersiniz

    rastgele tek kayıt çekmiş olursunuz.

    bunun ikinci tabloya yazar bu çektiginiz veriyi delete from tablo ile silerseniz.

    ama daha az ugrasmak için ilk mantigi tavsiye ederim. buna benzer başka mantiklarda olabilir tabiki.
  • 18-05-2009, 14:15:07
    #8
    evet eğer rand yapacaksan php kodu şart
    bi sayfada 2 farklı veritabanına bağlanabilirsin
    ayrıca şöyle de olabilir
    update tablo set id=id+1000
    id si 15 olan 1015 olur,sadece id ler artmış olur
    anlayacağın php yada başka bi dil kullanmadan zor işin
    birde mysql de while,for döngüleri var ama zor olur
    en iyisi kısa bi php kodu
  • 18-05-2009, 14:17:46
    #9
    $baglanti1=mysqll_connect(.................);
    $baglanti2=mysql_connect(............);
    $sorgu=mysql_query("select * from tbl order by rand()",$baglanti1);
    while($oku=mysql_fetch_array($sorgu))
    {
    mysql_query("INSERT INTO .....",$baglanti2);
    }


    $baglanti1 ile okudum
    $baglanti2 ile yazdım
    ok?