إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

استعرض أسماء الموظفين الذين عدد حروفهم متساوية


21 رد (ردود) على هذا الموضوع

#1 السيد النمر

السيد النمر

    عضو

  • الأعضــاء
  • 27 مشاركة

تاريخ المشاركة 03 April 2009 - 05:35 AM

السلام عليكم ورحمة الله وبركاته

إخواني الاعزاء

في الاسكيما الخاصة بالمستخدم SCOTT

أريد استعراض أسماء الموظفين الذين عدد حروف أسمائهم متساوية

لقد وصلت لهذا الحل وهو ناقص بالتأكيد

select a.ename , length(a.ename)
from emp a , emp b
where length(a.ename) = length(b.ename) and a.empno = b.mgr


وأخرج لي هذه النتيجة

ENAME LENGTH(A.ENAME)
---------- ---------------
BLAKE 5
JONES 5
SCOTT 5
BLAKE 5

بالطبع الحل ناقص

أرجو الحل من حضرتكم وشكرا

#2 TROYMAN

TROYMAN

    مشترك

  • الأعضــاء
  • 107 مشاركة

تاريخ المشاركة 03 April 2009 - 11:01 AM

السلام عليكم...

1  select ename,length(ename) from emp where length(ename) in 2  (select length(ename) from emp where ename is not null
3* group by length(ename) having count(*)>1)
SQL> /

ENAME LENGTH(ENAME)
---------- -------------
MILLER 6
TURNER 6
MARTIN 6
JAMES 5
ADAMS 5
SCOTT 5
CLARK 5
BLAKE 5
JONES 5
ALLEN 5
SMITH 5

ENAME LENGTH(ENAME)
---------- -------------
FORD 4
KING 4
WARD 4

14 rows selected.


<<اللهم لا علـم لنا إلا ما علّمتنا إنك أنت العليــم الحكيــم>>
<<اللهم علّمنا ما ينفعنا و انفعنا بما علّمتنا و ازدنا علماً>>



Programmer (C#.Net,C++,ASP) & Oracle Developer


#3 السيد النمر

السيد النمر

    عضو

  • الأعضــاء
  • 27 مشاركة

تاريخ المشاركة 03 April 2009 - 11:53 AM

جزاكم الله خيرا على تعاونك

اظن أن ايضا هذا الحل ياتي بنفس النيجة
SELECT ENAME , LENGTH(ENAME) 
FROM EMP ORDER BY LENGTH(ENAME)



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

بان ياتي بالاسماء التي عدد حروفها 4 حروف في عمود ، والاسماء التي عدد حروفها 5 حروف في عمود ، وهكذا

ارجو الرد

وجزاكم الله خيرا

#4 جود

جود

    مشترك

  • الأعضــاء
  • 55 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 03 April 2009 - 12:23 PM

جزاكم الله خيرا على تعاونك

SELECT ENAME , LENGTH(ENAME) 
FROM EMP ORDER BY LENGTH(ENAME)



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

بان ياتي بالاسماء التي عدد حروفها 4 حروف في عمود ، والاسماء التي عدد حروفها 5 حروف في عمود ، وهكذا

ارجو الرد

وجزاكم الله خيرا


لا أظن أن هذا الحل سياتي بنفس النيجة لأنك استخدمت فقط
ORDER BY وهي تعمل فقط على أعادة الترتيب قم بإضافة سجل جديد وانت ستلاحظ الفرق

ياأمتي إني رضعت عروبتي منذ الصغر
فتأصلت في خاطري كاللّون في جوف الحجر


Oracle Certified Professional


صورة


#5 السيد النمر

السيد النمر

    عضو

  • الأعضــاء
  • 27 مشاركة

تاريخ المشاركة 03 April 2009 - 12:58 PM

الهدف كان استعراض اسماء الموظفين التي حروف اسمائهم متساوية

اريد الان ان اجعل كل عدد حورق متاشبهه في عمود بهذا الشكل

length 4 length5
-----------------
ADAMS
SCOTT
CLARK
BLAKE
JONES
ALLEN
SMITH
WARD

وهكذا

وشكرا

#6 السيد النمر

السيد النمر

    عضو

  • الأعضــاء
  • 27 مشاركة

تاريخ المشاركة 04 April 2009 - 03:49 PM

انا محتاج اعمل تحت كل length المتساوي من الاسماء في عدد الحروف

ارجو الرد

وجزاكم الله خيرا

#7 TROYMAN

TROYMAN

    مشترك

  • الأعضــاء
  • 107 مشاركة

تاريخ المشاركة 04 April 2009 - 05:24 PM

أخي الكريم...
بالنسبة لأي سؤال نريد فيه التحكم بقيم الأعمدة فيجب تحديد عدد الأعمدة المراد إنشائه
فمثلاً في مثالك يجب تحديد عدد الأحرف الأعظمي الممكن تواجده في الجدول , بعد هذه المرحلة سوف تقوم باستخدام case or decode و تكراره بعدد الأعمدة
لذلك فإن تنفيذها باستخدام الاستعلام هي في الواقع غير ديناميكية...
إن أردت تحديد عدد الأعمدة .. استطيع مساعدك


<<اللهم لا علـم لنا إلا ما علّمتنا إنك أنت العليــم الحكيــم>>
<<اللهم علّمنا ما ينفعنا و انفعنا بما علّمتنا و ازدنا علماً>>



Programmer (C#.Net,C++,ASP) & Oracle Developer


#8 السيد النمر

السيد النمر

    عضو

  • الأعضــاء
  • 27 مشاركة

تاريخ المشاركة 05 April 2009 - 06:10 AM

الموجود في جدول EMP ثلاث مجموعات من الحروف

موظفين عدد حروف أسمائهم 4 حروف

وموظفين عدد حروف اسمائهم 5 حروف

وموظفين عدد حروف اسمائهم 6 حروف

هل هذا قصدك أن احدد لك عدد الاعمدة ثم ستقوم بالعمل على دالة DECOD او CASE من خلال الاستعلام الفرعي في جزء FROM

ألا يوجد حل أخر يجعلني اقسم الاسماء المتساوية في عدد الحروف على شكل اعمدة من خلال الاستعلام

أرجو المشاركة وطرح الحلول

#9 جود

جود

    مشترك

  • الأعضــاء
  • 55 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 05 April 2009 - 08:10 AM

[center]أعتقد أخ نمر
يجب أن تحدد عدد الأحرف لتتمكن من إضافة الأعمدة وذلك بالعمل على دالة DECOD او CASE
مثال :
SELECT ENAME,LENGTH(ENAME) ,CASE WHEN LENGTH(ENAME)=4 THEN ENAME ELSE NULL END "4",CASE WHEN LENGTH(ENAME)=5 THEN ENAME ELSE NULL END "5",
CASE WHEN LENGTH(ENAME)=6 THEN ENAME ELSE NULL END "6"
FROM EMP ORDER BY LENGTH(ENAME) ;[/center]

ياأمتي إني رضعت عروبتي منذ الصغر
فتأصلت في خاطري كاللّون في جوف الحجر


Oracle Certified Professional


صورة


#10 السيد النمر

السيد النمر

    عضو

  • الأعضــاء
  • 27 مشاركة

تاريخ المشاركة 05 April 2009 - 10:37 AM

شاكر أخي جود على ردك

لكن لو كان الأمر كذلك يمكنني استخدام المتغيرات البديلة

select decode (length(ename) , &L,ename) names from emp


ألا يوجد طريقة أخرى في الاستعلام ياتي بالأسماء بدون اللجوء الى طريقة كتابة عدد الحروف

شكرا لك من فكر وساعدني

ارجو مشاركة الخبراء

#11 colla

colla

    عضو نشط

  • الأعضــاء
  • 245 مشاركة

تاريخ المشاركة 06 April 2009 - 04:11 PM

يا اخ السيد النمر هذا ما استطعت التوصل إليه فارجو منك او من الاخوه الاعضاء ان يحوال
احد منكم بإزالة الخانات الفاضية حتى يكون المثال قد اكتمل . وبالنسبه إلى عدم ظهور الارقام في الاستعلام
فهذي يا خوي من لقيتلها حل وإذا لقيت حاجه نرجو منك تشاركنا فيها


select decode(length(ename),4,ename) for_lnth,
decode(length(ename),5,ename) fif_lnth,
decode(length(ename),6,ename) sex_lnth
from emp where length(ename) in (select length(ename)
from emp group by length(ename));

على المرء ان يسعى وليس عليه ادراك النجاح


صورة


#12 السيد النمر

السيد النمر

    عضو

  • الأعضــاء
  • 27 مشاركة

تاريخ المشاركة 07 April 2009 - 01:08 PM

جزاك الله خيرا يا أخ colla

بس الامر كما قدمه الاخ جود
وتبقى فكرة المتغيرات البديلة أفضل من أن نكتب أرقام لعدد حروف الأسماء

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

نرجو الرد من المتخصصين

وشكرا لكل المشاركين

#13 السيد النمر

السيد النمر

    عضو

  • الأعضــاء
  • 27 مشاركة

تاريخ المشاركة 07 April 2009 - 01:16 PM

select decode (length(ename) , &L,ename,length(ename) ) names from emp


هذا أخر ما وصلت إليه من خلال المتغيرات البديلة
إذا قمت بالضغط على رقم 5 مثلا
NAMES
---------
SMITH
ALLEN
4
JONES
6
BLAKE
CLARK
SCOTT
4
6
ADAMS

NAMES
---------
JAMES
4
6


إذا ضغطت على رقم غير موجود كعدد حروف في الجدول مثلا كرقم 3
NAMES
-------------------
5
5
4
5
6
5
5
5
4
6
5

NAMES
-------------------
5
4
6

14 rows selected.


أظن الطريقة واضحة

لكن أعتقد أن هناك أفضل من هذا

اتمنى مشاركة الناس معانا

وفقكم الله

تم التعديل بواسطة السيد النمر, 07 April 2009 - 01:18 PM.


#14 m_mm622

m_mm622

    عضو

  • الأعضــاء
  • 3 مشاركة

تاريخ المشاركة 09 April 2009 - 08:37 PM

انا عندى حل وان شاء الله يكون كويس وينفعك
دى جمله سيليكت هتطلع اسماء كل الموظفين مترتبين وكل مجموعه حروفهم متساويه مع بعض
وانا عملت مثال على last-name فى جدول emplpyees
وانت طبعا ممكن تطبق على اى جدول تانى
ودى جمله السيليكت
select last_name , length (last_name) len ------- هنا طبعا بنعمل سيليكت لــ last_name و طول حروف الــ last_name وسميت العمود هنا len
from employees --------- هنا طبعا السيليكت من جدول الــ employees
where length (last_name) = length (last_name) ------- هنا شرط السيليكت وهو مساواه الحروف ببعض
order by len -------- وهنا انا رتبت الاسماء الى هتطلع علشان يبقى كل مجموعه مع بعض يعنى الى عدد حروفهم 3 وبعدين وراهم الى عدد حروفهم 4 وهكذا ....

تم التعديل بواسطة m_mm622, 09 April 2009 - 08:48 PM.


#15 m_mm622

m_mm622

    عضو

  • الأعضــاء
  • 3 مشاركة

تاريخ المشاركة 09 April 2009 - 08:38 PM

يا ريت اكون قدرت افهم قصدك واكون عرفت اساعدك وياريت ترد عليا تقولى فكرت البسيطه نفعتك ولا لا
وشكرا ليك وللمنتدى الجميل

تم التعديل بواسطة m_mm622, 09 April 2009 - 08:42 PM.