• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مرتب سازی دادها بر اساس یک رشته
#1
متوجه نشدم چرا امتیاز منفی دادید ممنون.
کد پی‌اچ‌پی:
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]

هيچ اگر سايه پذيرد منم آن سايه هيچ
  پاسخ
تشکر شده توسط :
#2
sort شما بر اساس رشته هست در نتیجه
aaaaaaa0aaaaaaa1cccccc با هم یکی هست ولی قسمت بعدشون میشه اولی میشه 17 دومی میشه c2 خب ۱ بالاتر از c قرار میگیره
  پاسخ
تشکر شده توسط : majid1605
#3
خودمم اینو میدونم دنبال راهکاری واسه حل این مشکل هستم

هيچ اگر سايه پذيرد منم آن سايه هيچ
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان