/
  • مرتب سازی دادها بر اساس یک رشته

  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی مرتب سازی دادها بر اساس یک رشته
    نویسنده پیام
    majid1605 آفلاین
    عضو جدید
    **

    ارسال‌ها: 38
    تاریخ عضویت: ۱۳۹۲ شهريور ۳
    اعتبار: 0
    تشکرها : 14
    ( 4 تشکر در 4 ارسال )
    ارسال: #1
    مرتب سازی دادها بر اساس یک رشته
    متوجه نشدم چرا امتیاز منفی دادید ممنون.
    کد PHP:
    select idparentidtype ,padded_path
    from 
    (
        
    SELECT q1.*     
            , 
    CONCAT(lpad(q1.parentid,8,case q1.type when 'Q' then 'a' 
                                              
    when 'C' then 'b' 
                                              
    when 'A' then 'c' 
                                 
    end)         
            , 
    lpad(q1.id,8,case q1.type when 'Q' then 'a' 
                                             
    when 'C' then 'b' 
                                             
    when 'A' then 'c' 
                                 
    end)) as padded_path 
        FROM questions q1 
        WHERE q1
    .id=
        UNION 
        SELECT q2
    .*     
           , 
    CONCAT(lpad(q1.parentid,8,case q1.type when 'Q' then 'a' 
                                             
    when 'C' then 'b' 
                                             
    when 'A' then 'c' 
                                
    end)         
            , 
    lpad(q1.id,8,case q1.type when 'Q' then 'a' 
                                             
    when 'C' then 'b' 
                                             
    when 'A' then 'c' 
                                
    end)         
            , 
    lpad(q2.id,8,case q2.type when 'Q' then 'a' 
                                             
    when 'C' then 'b' 
                                             
    when 'A' then 'c' 
                                
    end) )as padded_path 
        FROM questions q1 
        JOIN questions q2     
            on q1
    .id=q2.parentid 
        WHERE q1
    .id=
        UNION 
        SELECT q3
    .*     
             , 
    CONCAT(lpad(q1.parentid,8,case q1.type when 'Q' then 'a' 
                                               
    when 'C' then 'b' 
                                               
    when 'A' then 'c' 
                                  
    end)         
             , 
    lpad(q1.id,8,case q1.type when 'Q' then 'a' 
                                              
    when 'C' then 'b' 
                                              
    when 'A' then 'c' 
                                  
    end)         
             , 
    lpad(q2.id,8,case q2.type when 'Q' then 'a' 
                                              
    when 'C' then 'b' 
                                              
    when 'A' then 'c' 
                                  
    end)         
             , 
    lpad(q3.id,8,case q3.type when 'Q' then 'a' 
                                              
    when 'C' then 'b' 
                                              
    when 'A' then 'c' 
                                  
    end)) as padded_path 
        FROM questions q1 
        JOIN questions q2     
            on q1
    .id=q2.parentid 
        JOIN questions q3     
            on q2
    .id=q3.parentid 
        WHERE q1
    .id=1
    ) as 
    order by padded_path

    با استفاده از کوپری بالا یک رشته ایجاد میکنم و بر اساس اون نتایج رو مرتب می کنم ولی یک مشکل وجود داره این که رشته ایی مثل
    aaaaaaa0aaaaaaa1cccccc17
    در جدول بالاتر از
    aaaaaaa0aaaaaaa1ccccccc2
    قرار میگیره درصورتی که اولی id=17 و دومی id=2 هست و مشخص هست که دومی باید بالاتر از اولی قرار بگیره[/align]
    __________________________________________________________________________
    هيچ اگر سايه پذيرد منم آن سايه هيچ
    ۱۳۹۳ شهريور ۹ ۰۸:۲۳ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #2
    RE: مرتب سازی دادها بر اساس یک رشته
    sort شما بر اساس رشته هست در نتیجه
    aaaaaaa0aaaaaaa1cccccc با هم یکی هست ولی قسمت بعدشون میشه اولی میشه 17 دومی میشه c2 خب ۱ بالاتر از c قرار میگیره
    __________________________________________________________________________
    http://mydolphin.ir
    ۱۳۹۳ شهريور ۱۱ ۰۲:۱۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : majid1605
    majid1605 آفلاین
    عضو جدید
    **

    ارسال‌ها: 38
    تاریخ عضویت: ۱۳۹۲ شهريور ۳
    اعتبار: 0
    تشکرها : 14
    ( 4 تشکر در 4 ارسال )
    ارسال: #3
    RE: مرتب سازی دادها بر اساس یک رشته
    خودمم اینو میدونم دنبال راهکاری واسه حل این مشکل هستم
    __________________________________________________________________________
    هيچ اگر سايه پذيرد منم آن سايه هيچ
    ۱۳۹۳ شهريور ۱۲ ۰۳:۴۶ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS