۱۳۹۳ شهریور ۰۹, ۰۹:۲۳ ب.ظ
متوجه نشدم چرا امتیاز منفی دادید ممنون.
با استفاده از کوپری بالا یک رشته ایجاد میکنم و بر اساس اون نتایج رو مرتب می کنم ولی یک مشکل وجود داره این که رشته ایی مثل
aaaaaaa0aaaaaaa1cccccc17
در جدول بالاتر از
aaaaaaa0aaaaaaa1ccccccc2
قرار میگیره درصورتی که اولی id=17 و دومی id=2 هست و مشخص هست که دومی باید بالاتر از اولی قرار بگیره[/align]
کد پیاچپی:
select id, parentid, type ,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=1
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=1
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 x
order by padded_path;
aaaaaaa0aaaaaaa1cccccc17
در جدول بالاتر از
aaaaaaa0aaaaaaa1ccccccc2
قرار میگیره درصورتی که اولی id=17 و دومی id=2 هست و مشخص هست که دومی باید بالاتر از اولی قرار بگیره[/align]
هيچ اگر سايه پذيرد منم آن سايه هيچ