الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حل لمشكلة الترتيب

مغلق
بدأه abo-abdo في 30 أبريل 2007 · 16 رد · 2,774 مشاهدة · في قسم لغة الاستفسارات SQL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي مشكلة و هي لدي عمود من نوع varchar2 يحوي قيم عددية و نصية و أريد ترتيبه كيف السبيل لذلك

ما هي عبارة الـ Select لذلك

ASP.Net only

عن أبي قبيل قال كنا عند عبدالله بن عمرو بن العاص وسئل أي المدينتين تفتح أولا القسطنطينية أو رومية فدعا عبدالله بصندوق له حلق قال فأخرج منه كتابا قال فقال عبدالله بينما نحن حول رسول الله صلى الله عليه وسلم نكتب إذ سئل رسول الله صلى الله عليه وسلم أي المدينتين تفتح أولا أقسطنطينية أو رومية فقال رسول الله صلى الله عليه وسلم مدينة هرقل تفتح أولا . يعني قسطنطينية . رواه أحمد

ان شاء الله ستفتح رومية و هي على الأغلب مدينة روما

#2

أخي لنفرض اسم الجدول الذي يحوي العمود هو t1 واسم العمود هو t1 تكون عبارة select كالتالي

Select f1 from t1

order by f1

أما للترتيب التنازلي نكتب

select f1 from t1

order by f1 desc

#3

اخى العزيز اعتقد انك تقصد جملة order by

كود

select column_name

from table_name

order by column_name

or

select column_name

from table_name

order by column_name desc

#4

لا يا أعزائي لست أقصد ما رددتم عليه لآنه لوكانت لدي القيم التالية 10-20-1000-500-400

فإن نتيجة الترتيب ستكون

10-1000-20-400-500

و هذا ليس بصحيح

ASP.Net only

عن أبي قبيل قال كنا عند عبدالله بن عمرو بن العاص وسئل أي المدينتين تفتح أولا القسطنطينية أو رومية فدعا عبدالله بصندوق له حلق قال فأخرج منه كتابا قال فقال عبدالله بينما نحن حول رسول الله صلى الله عليه وسلم نكتب إذ سئل رسول الله صلى الله عليه وسلم أي المدينتين تفتح أولا أقسطنطينية أو رومية فقال رسول الله صلى الله عليه وسلم مدينة هرقل تفتح أولا . يعني قسطنطينية . رواه أحمد

ان شاء الله ستفتح رومية و هي على الأغلب مدينة روما

#5

بسيطة إذا كنت متأكد من أن القيم عندك أرقام تقوم بعمل التالي :

select col1 from table1 order by to_number(col1);
#6

لا يوجد أرقام و نصوص أريد ان يتم ترتيب الأرقام و من ثم النصوص و الأرقام مرتبة بشكل صحيح

ASP.Net only

عن أبي قبيل قال كنا عند عبدالله بن عمرو بن العاص وسئل أي المدينتين تفتح أولا القسطنطينية أو رومية فدعا عبدالله بصندوق له حلق قال فأخرج منه كتابا قال فقال عبدالله بينما نحن حول رسول الله صلى الله عليه وسلم نكتب إذ سئل رسول الله صلى الله عليه وسلم أي المدينتين تفتح أولا أقسطنطينية أو رومية فقال رسول الله صلى الله عليه وسلم مدينة هرقل تفتح أولا . يعني قسطنطينية . رواه أحمد

ان شاء الله ستفتح رومية و هي على الأغلب مدينة روما

#7

يوجد أرقام و نصوص أريد ان يتم ترتيب الأرقام و من ثم النصوص و الأرقام مرتبة بشكل صحيح

ASP.Net only

عن أبي قبيل قال كنا عند عبدالله بن عمرو بن العاص وسئل أي المدينتين تفتح أولا القسطنطينية أو رومية فدعا عبدالله بصندوق له حلق قال فأخرج منه كتابا قال فقال عبدالله بينما نحن حول رسول الله صلى الله عليه وسلم نكتب إذ سئل رسول الله صلى الله عليه وسلم أي المدينتين تفتح أولا أقسطنطينية أو رومية فقال رسول الله صلى الله عليه وسلم مدينة هرقل تفتح أولا . يعني قسطنطينية . رواه أحمد

ان شاء الله ستفتح رومية و هي على الأغلب مدينة روما

#8

هل من الممكن ان تضع لنا صيغة من الـ Output لهذا الحقل .؟؟

#9

200 400 300 900 100 a20 b 60 a80 a50

ASP.Net only

عن أبي قبيل قال كنا عند عبدالله بن عمرو بن العاص وسئل أي المدينتين تفتح أولا القسطنطينية أو رومية فدعا عبدالله بصندوق له حلق قال فأخرج منه كتابا قال فقال عبدالله بينما نحن حول رسول الله صلى الله عليه وسلم نكتب إذ سئل رسول الله صلى الله عليه وسلم أي المدينتين تفتح أولا أقسطنطينية أو رومية فقال رسول الله صلى الله عليه وسلم مدينة هرقل تفتح أولا . يعني قسطنطينية . رواه أحمد

ان شاء الله ستفتح رومية و هي على الأغلب مدينة روما

#10

جرب هذا الحل ولكني غير متأكد منه حيث أنني لم اقم بتجربته

select col1 from table1 order by to_number(substr(col1,2,5)) , col1;
#11

ما مشي الحال

ASP.Net only

عن أبي قبيل قال كنا عند عبدالله بن عمرو بن العاص وسئل أي المدينتين تفتح أولا القسطنطينية أو رومية فدعا عبدالله بصندوق له حلق قال فأخرج منه كتابا قال فقال عبدالله بينما نحن حول رسول الله صلى الله عليه وسلم نكتب إذ سئل رسول الله صلى الله عليه وسلم أي المدينتين تفتح أولا أقسطنطينية أو رومية فقال رسول الله صلى الله عليه وسلم مدينة هرقل تفتح أولا . يعني قسطنطينية . رواه أحمد

ان شاء الله ستفتح رومية و هي على الأغلب مدينة روما

#12

طيب جرب هذه .

select col1,substr(col1,2,3) as col2 from table order by 2,1;

؟؟

وأيضاً لم أجرب هذه التعليمة لعدم وجود جهاز حالياً وغالباً انها تعمل .

#13
abo-abdo كتب:
لا يا أعزائي لست أقصد ما رددتم عليه لآنه لوكانت لدي القيم التالية 10-20-1000-500-400

فإن نتيجة الترتيب ستكون

10-1000-20-400-500

و هذا ليس بصحيح

اخى العزيز كلامك هذا غير صحيح لانه اذا كان لديك جدول table_name وبه عمود column_name من النوع varchar2 وهذا العمود

به بيانات مثل ( a,20,50,z,15,o) بهذا الترتيب

فعند تنفيذ هذا الكود

select column_name
from table_name
order by column_name

ستكون النتيجة كما يلى

column_name
--------------------
15
20
50
a
o
z

وهذا الكود انا جربته بنفسى

تم تعديل هذه المشاركة بواسطة magedomran في 18 مايو 2007 في 00:04

#14

لا يا أعزائي لست أقصد ما رددتم عليه لآنه لوكانت لدي القيم التالية 10-20-1000-500-400

فإن نتيجة الترتيب ستكون

10-1000-20-400-500

و هذا ليس بصحيح

يا حبيبي انه يرتب حسب الخانة اليسارية الأكثر قوة ثم يتجه نحو الأقل قوة لذا فإن كلامي صحيح و مجرب و أعرف ما أسأل

ASP.Net only

عن أبي قبيل قال كنا عند عبدالله بن عمرو بن العاص وسئل أي المدينتين تفتح أولا القسطنطينية أو رومية فدعا عبدالله بصندوق له حلق قال فأخرج منه كتابا قال فقال عبدالله بينما نحن حول رسول الله صلى الله عليه وسلم نكتب إذ سئل رسول الله صلى الله عليه وسلم أي المدينتين تفتح أولا أقسطنطينية أو رومية فقال رسول الله صلى الله عليه وسلم مدينة هرقل تفتح أولا . يعني قسطنطينية . رواه أحمد

ان شاء الله ستفتح رومية و هي على الأغلب مدينة روما

#15
اقتباس
صحيح و مجرب و أعرف ما أسأل

طيب هل يوجد شرط معين ممكن من خلاله إسترجاع قيم العمود أو جزء منه بحيث تكون النتائج فقط أرقام ؟؟

أكيد هناك طريقة ما .

للأفضلية إذا أمكن تعطينا صيغة الـ Output للبيانات التي لديك على textfile أو آكسيس .

#16

اعتقد ان حل هذه المشكلة يتم برمجيا PLSQL فقط لفرز الارقام اولا و من ثم ترتيبها و من ثم فرز الذي يحتوي على رقم مع حروف و اخيرا فرز الحروف فقط .

و لا تكتب بكفك غير شيء . . . . . يسرك في القيامة أن تراه

#17

أخواني الكرام ، دعوني أشارككم علي قد إمكانياتي وأتمني التقبل :

نفترض أن لدينا جدول يدعي Emp(Emp_Code,Emp_Name)

أخي الكريم ، إذا كان الحقل من نوع نصي ويحتوي علي نوعين من البيانات ( نص ورقم ) ، وكان القيمة النصية ثابتة كما يلي :

S1 - S2 - S3 - S4 -------- Sn

ففي هذه الحالة ، يمكنك إستخدام الكود التالي :

Select * From Emp Order By To_Number(SubStr(Emp_Code,2))

*****************************************************

أما إذا كانت القيمة النصية غير محددة ، فمن المفضل تقسيم الحقل الي قسمين ، القسم الأول خاص بالقيمة النصية ، أما القسم الثاني خاص بالقيمة الرقمية ، ويتم وضع بينهما فاصل مثل المسافة أو رمز معين ، مثال :

ASB-1

AAA-2

ARXRF-3

BB-4

فيمكنك إستخدام جملة الإستعلام التالية :

Select *

From Emp

Order By To_Number(SubStr(Emp_Code,InStr(Emp_Code,'-') + 1))

********************************************************

أما إذا كان هناك حقل نصي وحقل رقمي ، فالحل الوحيد أن تقوم بإجراء إستعلامين :

الأول لعرض كافة السجلات التي تحتوي علي حقل يحتوي علي أرقام :

Select *

From Emp

Where To_Number(Emp_Code) > 0

الثاني لعرض كافة السجلات التي تحتوي علي حقل نصي يحتوي علي نصوص :

Select *

From Emp

Where To_Number(Emp_Code) = 0

وبعد ذلك قم بربط الإستعلامين بأمر Union ، كما يلي :

Select *

From Emp

Where To_Number(Emp_Code) > 0

Union

Select *

From Emp

Where To_Number(Emp_Code) = 0

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

هذا الموضوع مغلق.

مواضيع مشابهة