आपको बेहतर तरीके से parent_id
रखना चाहिए लेकिन माता-पिता का नाम नहीं।
यहां आपकी तालिका को ऑर्डर करने का त्वरित समाधान है http://sqlfiddle.com/#!9/2a1fb /3
SELECT *
FROM table1
ORDER BY
CASE WHEN parent_id IS NULL THEN CAST(ID AS CHAR)
ELSE CONCAT(CAST(parent_id AS CHAR),'-', CAST(ID AS CHAR)) END
1 संपादित करें वेरिएंट #2 :-) http://sqlfiddle.com/#!9/76dcb/23
SELECT t1.*
FROM table1 t1
LEFT JOIN table1 t2
ON t2.ID = t1.parent_id
ORDER BY
CASE WHEN t2.ord_idx IS NULL THEN CAST(t1.ord_idx AS CHAR)
ELSE CONCAT(CAST(t2.ord_idx AS CHAR),'-',CAST(t1.ord_idx AS CHAR)) END
2 संपादित करें यह देखने के लिए कि यह आदेश कैसे काम करता है, आप इस फ़ील्ड को कुछ चुनिंदा भाग में जोड़ सकते हैं जैसे:
SELECT t1.*, CASE WHEN t2.ord_idx IS NULL THEN CAST(t1.ord_idx AS CHAR)
ELSE CONCAT(CAST(t2.ord_idx AS CHAR),'-',CAST(t1.ord_idx AS CHAR)) END as my_order
FROM table1 t1
LEFT JOIN table1 t2
ON t2.ID = t1.parent_id
ORDER BY
CASE WHEN t2.ord_idx IS NULL THEN CAST(t1.ord_idx AS CHAR)
ELSE CONCAT(CAST(t2.ord_idx AS CHAR),'-',CAST(t1.ord_idx AS CHAR)) END