• 26-09-2010, 22:13:55
    #10
    SNaRe adlı üyeden alıntı: mesajı görüntüle
    O zaman oraya PHP çözümüde olur yazmıycaksın Bütün php çözümleri adamı buraya götürür. mysql üzerinden temiz çözüm lazım sana . Kolay gelsin. Çözümü bende merak ediyorum
    php çözüm önerilerine de açıgım ama array'e atıp tekrar loop'a sokmak gibi degil, tek komut varsa bu iş için onları merak ediyorum, teşekkürler bu arada tekrardan, dediğin yöntem elbette doğru ama dediğim gibi kısayolu ve en performanslısı lazım bana
  • 26-09-2010, 22:16:25
    #11
    tristfs adlı üyeden alıntı: mesajı görüntüle
    select * from videolar order by isim+0
    yanlış düşünmediysem bu kod aslında seni kandırıyor, isim+0=0
    tüm kolonlarda 0 oluşuyor ve veritabanına eklenme tarihine göre verdiği için (ve ilk bölümden eklendiyse) doğru gözüküyor.

    zaten öyleyse ve idsi var ise bunların ona göre sıralatman daha uygun bence.
    hayır dostum dediğin gibi değil,

    videolar karışık şekilde ekli db de, yani şöyle mesela


    (1, 'Kavak Yelleri 1. Sezon 1. Bölüm'),
    (2, 'Kavak Yelleri 1. Sezon 2. Bölüm'),
    (3, 'Kavak Yelleri 1. Sezon 3. Bölüm'),
    (4, 'Kavak Yelleri 10. Sezon 2. Bölüm'),
    (5, 'Kavak Yelleri 10. Sezon 1. Bölüm'),
    (6, 'Kavak Yelleri 2. Sezon 1. Bölüm'),
    (7, 'Kavak Yelleri 2. Sezon 3. Bölüm'),
    (8, 'Kavak Yelleri 1. Sezon 4. Bölüm');

    ama bunları o yöntemimle düzgün sıralatabiliyorum, isim+0=0 olmaz, isim+0 string içindeki integerların yanına 0 ekler öyle sıralar, benim mantığıma göre tabi, çalıştıgına göre de öyle bişeyler olsa gerek.
  • 26-09-2010, 22:23:21
    #12
    hacım baktın olmuyor tabloda sira diye bir alan oluştur. sıralamayı bunun üzerinden yap
  • 26-09-2010, 22:25:50
    #13
    Üyeliği durduruldu
    // Okuduk
    $result = mysql_query("select * from videolar order by isim+0");
       
    // Şu şekilde arraye attık 
    for($i = 0; $array[$i] = mysql_fetch_assoc($result); $i++) ;
       
    // Neden olduğunu bilmiyor ama sonra array boş kalıyor. Onuda sildik
    array_pop($array);
    print_r($array); 
    reverse vs zaten hak getire :)
    $array den çıkanı print_r yle görüp üzerinde oynarsın. Bu şekilde olur en extreme çözüm herhalde. Yine performans kaybı olur ama minimumunu bu yapar gibi
  • 26-09-2010, 22:26:28
    #14
    Eposta Aktivasyonu Gerekmekte
    Bu işini görür
    select * from (select video_id From videolar order by isim+0 asc) as donBakiyim order by video_id desc
  • 26-09-2010, 22:39:49
    #15
    NiZZo_ adlı üyeden alıntı: mesajı görüntüle
    Bu işini görür
    select * from (select video_id From videolar order by isim+0 asc) as donBakiyim order by video_id desc
    işte bu =)

    SELECT * FROM ( SELECT * FROM video WHERE kategori =3 ORDER BY isim +0 ) AS donBakiyim ORDER BY id DESC


    peki bu sorgu neden bu kadar uzun sürüyor acaba ?
  • 26-09-2010, 22:43:55
    #16
    Eposta Aktivasyonu Gerekmekte
    İçiçe sorgu olduğu için önce içteki sorguyu çalıştırıyor sonra çıkan sonucu donBakiyim diye sanal bir tablo oluşturup tutuyor ve dıştaki sorguyuda bu sanal tabloya göre çalıştırıyor. Php ile yaparsan daha fazla kasacaktır.

    Ben en fazla şimdiye kadar 4 içiçe tablo kullandım ram mefta, ona göre.
  • 26-09-2010, 22:54:57
    #17
    NiZZo_ adlı üyeden alıntı: mesajı görüntüle
    İçiçe sorgu olduğu için önce içteki sorguyu çalıştırıyor sonra çıkan sonucu donBakiyim diye sanal bir tablo oluşturup tutuyor ve dıştaki sorguyuda bu sanal tabloya göre çalıştırıyor. Php ile yaparsan daha fazla kasacaktır.

    Ben en fazla şimdiye kadar 4 içiçe tablo kullandım ram mefta, ona göre.

    sorgumun son hali:

    $al=mysql_query("select * from (select * From video where kategori='$idx' order by isim+0 limit $limit1,$limit2) as donBakiyim order by id desc ");

    indexleri falan ayarladım, baya hızlı oldu ve istediğim gibi sıralandı alayı, teşekkürler, repini verdim
  • 26-09-2010, 22:55:47
    #18
    Üyeliği durduruldu
    localde isim+0 şeklinde denedim. string olan alan integer a dönmedi. 0 değerinde bir alan oluşur bütün kayıtlar için. bunu istediğin kadar diz farketmez. aynı şeyi BINARY,CAST ve CONVERT ile denedim sonuç aynı. bence database ni değiştir.

    +

    NiZZo_ adlı üyeden alıntı: mesajı görüntüle
    Bu işini görür
    select * from (select video_id From videolar order by isim+0 asc) as donBakiyim order by video_id desc
    eğer arada bulunan bölümlerde bir sorun oluşup silinmesi durumunda ( yani id lerin sırası ile bölümlerin sırası aynı sırada gitmezse ) sorun olmazmı bu sorguda?