اذهب الي المحتوي
أوفيسنا

مراجع ومصادر لشرح الاستعلامات الفرعية بتوسع


الردود الموصى بها

السلام عليكم

أحتاج لشروح وافية للاستعلامات الفرعية لمزيد من الفهم

أرجو أن تدلونى على بعض المصادر النافعة فى هذا الشأن

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

رابط هذا التعليق
شارك

السلام عليكم

هذا الكتاب من احد الاخوه جزاه الله خيرا سيفديك فالاستعلامات كثيرا كما قيل الا انه بالانجليزيه

حاولت ان اتعلم منه ولو شىء بسيط الا اننى لا افهم الانجليزيه ولا احبها

فان كان لك فيها او اى احد ويريد ان يشرح لنا ببساطه ما فيه مع الامثله لنفهمه ونتعلم فجزاه الله خيرا

تقبل تحياتى وتمنياتى لك وللجميع بالتوفيق

طبتم واهتديتم

 

تم تعديل بواسطه jjafferr
تم حذف المرفق لمخالفته قوانين المنتدى - حقوق الملكية الفكرية
  • Like 2
رابط هذا التعليق
شارك

السلام عليكم أستاذ أحمد الفلاحجى ما اسم الكتاب؟

أما بنسبة للاستاذ عبد الفتاح كيرة فهذا الموقع يعطيك الكثير من الكتب بالانجليزية أرجو أن ينفعك

https://b-ok.cc/s/sql

  • Like 2
رابط هذا التعليق
شارك

26 دقائق مضت, rey360 said:

السلام عليكم أستاذ أحمد الفلاحجى ما اسم الكتاب؟

أما بنسبة للاستاذ عبد الفتاح كيرة فهذا الموقع يعطيك الكثير من الكتب بالانجليزية أرجو أن ينفعك

https://b-ok.cc/s/sql

وعليكم السلام اخى اسم الكتاب John Wiley & Sons - SQL for Dummies, 5th Edition

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

وجزاك الله خيرا على مشاركتك ايانا الموقع ولو فى حاجه بالعربى يبقى افضل

تقبل تحياتى

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم 🙂

 

اليك هذا المرفق ، فيه مثالين:

المثال الاول: عندنا جدولين ، tbl_Seq و tbl_New_Seq ، فيهم نفس البيانات ، نريد نأخذ اكبر قيمة من الحقل Seq في tbl_Seq ، ثم نستخدم هذه القيمة ، وندخل بقية البيانات في الجدول tbl_New_Seq ،

المثال الثاني: نفس المثال الاول ، ولكن العمل على جدول واحد فقط ، tbl_Sections

1167.Clipboard01.jpg.858d94cb8ef48c3887fbdc48cf170a2a.jpg

.

المشكلة في لما تستعمل استعلام المجاميع ، والامر Max للحقل Seq ، لتحصل على اعلى قيمة ، ثم تربطه بالجدول الآخر ، فيصبح استعلامك (نموذجك) غير قابل للتعديل ،

بينما اذا استعملنا نفس استعلام المجاميع اعلاه ، بالامر Max للحقل Seq ، ولكن استعملناه كإستعلام فرعي ، فيصبح الاستعلام (النموذج) قابل للتعديل 🙂

 

اترك لك المجال تفحص المثال الاول ونتائجه ،

وهنا اوضح عمل المثال الثاني: فنرى اني عملت استعلام فرعي للقيمة Seq :

1167.Clipboard02.jpg.f6cb7606877e5f75d1b78a4e93e4378f.jpg

.

ونتيجة الاستعلام ، يمكن تعديلها ، للحقل New_Section :

1167.Clipboard03.jpg.a6f66bdd21263cc23518acdbaf6ace21.jpg

.

 

وللتجربة ، اخذ الاستعلام الفرعي اعلاه ، وضعه في استعلام مستقل ، ثم اربط الاستعلام بالجدول ، فلن تحصل على نتيجة صحيحة !!

 

جعفر

1167.SubQuery.mdb.zip

  • Like 2
رابط هذا التعليق
شارك

4 دقائق مضت, jjafferr said:

وللتجربة

شكرا لك

جارى الفحص

هل يوجد مثال للحصول على أحدث 3 تواريخ من حقل تاريخ فى جدول باستخدام استعلام فرعى؟

رابط هذا التعليق
شارك

17 ساعات مضت, jjafferr said:

استعمل TOP 3  بدلا عن TOP 1

 

بارك الله فيك أستاذ جعفر

هذه هى النتيجة

آخر 3 تقارير لكل موظف

mysub.PNG.b42de1d4389e0b378ac9eee8709a84b0.PNG

 

و هذا هو ال  sql

SELECT qq1.TaqEmp, qq1.taqFrom, qq1.taqTo, qq1.taq_number
FROM qq1
WHERE (((qq1.taqFrom) In (SELECT TOP 3 ss.taqFrom
FROM qq1 AS ss where ss.taqemp = qq1.taqemp
ORDER BY ss.taqFrom DESC;
)))
ORDER BY qq1.TaqEmp, qq1.taqFrom DESC;

 

  • Like 1
رابط هذا التعليق
شارك

5 دقائق مضت, jjafferr said:

عفوا ، انا لم افهم شيء !!

😅😅استخدمت مثالك الذى أرفقته منذ قليل للاستعلام الفرعى للحصول على أعلى قيمة 

وعدلته للحصول على أحدث 3 تواريخ

باستخدام  top3

 

رابط هذا التعليق
شارك

1 دقيقه مضت, jjafferr said:

الحمدلله 🙂
وشكرا على المعلومة 🙂

 

جعفر

شكرا لك أنت

يا ليت نكمل المعلومة

بمثال لاستعلام فرعى لاستخراج القيمة رقم 2 فى حقل التاريخ

أو القيمة رقم 3 .....أو أيا كانت

مع جزيل شكرى

 

رابط هذا التعليق
شارك

حاولت كثيراً ولم افلح فى تطبيقه اخى واستاذى جعفر

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

ساحول مره اخرى وان فشلت سارفق مثالى لكم اساتذتى للتعلم والفائده

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

تقبلوا تحياتى وتمنياتى لكم وللجميع بالتوفيق

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

المطلوب الحصول على تاريخ التقرير رقم 2 حسب حقل التاريخ  taqfrom

يعنى التاريخ التالى لأحدث تاريخ وذلك باستخدام الاستعلام الفرعى

Capture.PNG.dec52b4f39dfadbcfa3c39310c0bf63e.PNG

 

@jjafferr

رابط هذا التعليق
شارك

صدقني انا بطيئ في ادخال البيانات ، فيا ريت ترفق لنا هذه البيانات 🙂

 

1 ساعه مضت, عبد الفتاح كيرة said:

المطلوب الحصول على تاريخ التقرير رقم 2 حسب حقل التاريخ  taqfrom

يعنى التاريخ التالى لأحدث تاريخ وذلك باستخدام الاستعلام الفرعى

 

يا اخي ، قول لي من بياناتك شو اللي تريد اظهاره بالاستعلام ، وما فهمت اي سجل تريد :biggrin:

 

جعفر

رابط هذا التعليق
شارك

أريد استخراج السجل الذي يكون فيه حقل taqfrom 

هو رقم 2 من حيث التاريخ الأحدث

يعنى فى الصورة

1/9/2014

للموظف رقم 1

و

1/9/2017

للموظف رقم 5

 

تم تعديل بواسطه عبد الفتاح كيرة
رابط هذا التعليق
شارك

تفضل ، استعلام يمكن تحديثه 🙂

ولكن ليس بأستعلام واحد !!

كان ممكن نختصر هذه الاستعلامات ، ولكنك اردت الحل عن طريق الاستعلام الفرعي ، وليس وحدة نمطية !!

الاستعلام 4 هو مطلبك 🙂

image.png.4f5fe4dc822a24cbb5d5fd962c1c90a4.png

.

image.png.b0561afbbf1a57fb0f61bf67a134c477.png

.

 

جعفر

1167.1.mdb.zip

  • Like 1
رابط هذا التعليق
شارك

شكرا جزيلا أخانا الأستاذ  @jjafferr  و النتائج صحيحة لكن الطرق مختلفة

سأشرح - لمن يريد - خطوات أخرى أوصلتنى للناتج و سأرفق ملفا إن شاء الله

أولا : نصمم استعلاما للحصول على أعلى تاريخ ( الأحدث) من الجدول t1 باسم مستعار  ss  و هو استعلام 2 و ذلك باستخدام  top1

   و نرتب حسب حقل التاريخ  taqfrom تنازليا ليكون أحدث تاريخ بالأعلى .

و نحصل على جملة  sql التالية

SELECT TOP 1 ss.taqFrom
FROM t1 AS ss
ORDER BY ss.taqFrom DESC;
ثانيا نأخذ جملة ال sql  السابقة و نضعها كمعيار فى حقل taqfrom  للاستعلام الجديد  و هو استعلام 1

و هنا نرتب جملة sql كالتالى

SELECT t1.taqemp, t1.taqFrom, t1.taqTo, t1.taq_deg
FROM t1
WHERE (((t1.taqFrom) In (SELECT TOP 1 ss.taqFrom
FROM t1 AS ss 
where ss.taqemp = t1.taqemp and ss.taqfrom <> 
(SELECT TOP 1 ss.taqFrom
FROM t1 AS ss
 where ss.taqemp = t1.taqemp
ORDER BY ss.taqFrom DESC)
ORDER BY ss.taqFrom DESC;
)));

الشرح قدر الإمكان

SELECT t1.taqemp, t1.taqFrom, t1.taqTo, t1.taq_deg
FROM t1

أدرج الحقول السابقة فى الاستعلام بصورة عادية من جدول  ف1 و من بينها طبعا حقل taqfrom  الخاص بتاريخ بداية تقرير الموظف ( التقرير هو تقرير الكفاءة السنوى للموظف يؤخذ كل عام من 1 سبتمبر  حتى 31 أغسطس )

WHERE (((t1.taqFrom) In

بشرط أن تكون قيمة حقل التاريخ ضمن مايلى :

(SELECT TOP 1 ss.taqFrom FROM t1 AS ss 

و هو جملة sql الخاصة باستعلام 2 و التى استخرجنا بها أعلى قيمة للتاريخ كما سبق

where ss.taqemp = t1.taqemp and ss.taqfrom <>

بشرطين هامين

الأول تساوى حقل رقم الموظف

الثانى أن يكون حقل التاريخ لا يساوى ما يلى

(SELECT TOP 1 ss.taqFrom FROM t1 AS ss  where ss.taqemp = t1.taqemp

استعلام فرعى آخر 

وهنا تحتاج مثلى لقدرة عظيمة على التخيل للاستعلامات الفرعية المركبة

يعنى ( حقل التاريخ يكون مثل أعلى قيمة التى بدورها لا تساوى ؟أعلى قيمة ..)

و ORDER BY ss.taqFrom DESC) ORDER BY ss.taqFrom DESC;

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

مرة لكل استعلام فرعى

لاحظ النتيجة 

التاريخ الثانى لكل موظف

Capturebefore.PNG.45d6e058b8cae5398e5c8c63ee202fbd.PNG

ثم سجل واحد لكل موظف هو الثانى

Captureafter.PNG.6c9f225f744da1a1e2ca932c54d9a3a0.PNG

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

sample2.accdb

 

 

3 دقائق مضت, عبد الفتاح كيرة said:

ss.taqemp = t1.taqemp

نسيت هذه الجزئية و هى هامة لربط الاستعلام الفرعى بالرئيسى

تم تعديل بواسطه عبد الفتاح كيرة
  • Like 2
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information