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

عبارة Sql صعبت لم أجد حلاً لها

مغلق
بدأه imadouzoun في 19 مارس 2006 · 7 رد · 641 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

إخواني الكرام في الحقيقة هناك أمر في عبارات الـ Sql عرقل إنشاء أحد المشاهد ( VIEW ) التي أكتبها و هو :

عندي الجداول التالية :

ج1-تلاميذ الأساتذة ( كل تلاميذ الأساتذة القديمة و الحديثة )

ج2-تلاميذ الأساتذة القدامى (تلاميذ الأساتذة القديمة فقط )

لكل منهما الحقول التالية :

الحقل الأول : رقم تسلسلي --> ID

الحقل الثاني : رقم الطالب --> NameID

الحقل الثالث : رقم الأستاذ --> TeacherID

المطلوب : عبارة Select تجلب الطلاب تلاميذ الأساتذة الحديثين ..

أي بمعنى برمجي :

إختيار (NameID و TeacherID) من الجدول ج1 الغير موجودة في الجدول ج2 ... فما الحل حفظكم الله؟؟؟ :wacko:

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#2

الحمد لله حلينا المسألة :

سأضيف الحل للفائدة العامة .

المثال يعيد السجلات الموجودة في أحد الجداولين و التي فيه قيمة الحقلين (Name , Id) غير مطابقة لأي من (Name , Id) في الجدول الاخر .

Create Table T1(Id Int Identity(1,1) , Name Nvarchar(50))
Go
Create Table T2(Id Int Identity(1,1) , Name Nvarchar(50))
Go

--- Inserting The Records
Insert Into T1(name) Values('Ahmad')
Insert Into T1(name) Values('Amer')
Insert Into T1(name) Values('Smeer')
Insert Into T1(name) Values('Wael')
---
Insert Into T2(name) Values('Ahmad')
Insert Into T2(name) Values('Amer')
Insert Into T2(name) Values('Smeer')
Insert Into T2(name) Values('Wael')


-- The deferance
Insert Into T2(name) Values('T')
Insert Into T2(name) Values('L')

--- The Sql Query Is :

SELECT     T2.Id, T2.name
FROM         T2
 LEFT OUTER JOIN T1 ON
  T1.Id = T2.Id
    AND
  T1.name = T2.name
WHERE
 (T1.Id IS NULL) AND (T1.name IS NULL)

---------------------------  The Results
ID        Name
---       ---------
5              T
6              L
-----------------------

الحمد لله . :lol:

تم تعديل هذه المشاركة بواسطة imadouzoun في 19 مارس 2006 في 03:54

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#3

السلام عليكم

اعتقد الحل انك تعمل sub queries

هفترض التالى

الجدول الاول القديم والحديث tbl_1

الحقل الأول : رقم تسلسلي --> ID

الحقل الثاني : رقم الطالب --> NameID

الحقل الثالث : رقم الأستاذ --> TeacherID

وعندى البيانات بى الشكل التالى

  NameID
1
2
3
4
5

والثانى tbl_2

الحقل الأول : رقم تسلسلي --> ID

الحقل الثاني : رقم الطالب --> NameID

الحقل الثالث : رقم الأستاذ --> TeacherID

 NameID
1
22
2
5

جملة الاستعلام هتكون بى الشكل التالى

 SELECT  *
FROM tbl_1
WHERE NameID  NOT IN (SELECT NameID  FROM tbl_2)

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#4

السلام عليكم أخي وليد :

شكراً على الفكرة التي طرحتها .. لكن أنا أريد ألا يتكرر الـ NameID و TeacherID معاً في ان واحد .. وليس الـ NAMEID فقط . :)

يعني إذا كانت قيم الحقول كالتالي :

NAMEID  --> 5
TeacherID -->1
في الجدول الأول 

NAMEID --> 5
TeacherID --> 2
في الجدول الثاني

فإن عبارة الإستعلام يجب أن تجلب هذا السجل أيضاً من الجدول الثاني على أنه مختلف .. ;)

تم تعديل هذه المشاركة بواسطة imadouzoun في 19 مارس 2006 في 21:11

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#5

بالضبط

left Outer join

سلام

تم تعديل هذه المشاركة بواسطة Desigen في 20 مارس 2006 في 08:33

#6

السلام عليكم

عليكم السلام اخى عماد

الاجابة الخاصة بى كانت على السؤال التالى

اقتباس
المطلوب : عبارة Select تجلب الطلاب تلاميذ الأساتذة الحديثين ..

أي بمعنى برمجي :

إختيار (NameID و TeacherID) من الجدول ج1 الغير موجودة في الجدول ج2 ... فما الحل حفظكم الله؟؟؟ 

ولم تحدد الشرط التالى فى السؤال ;)

اقتباس
  لكن أنا أريد ألا يتكرر الـ NameID و TeacherID معاً في ان واحد .. وليس الـ NAMEID فقط 

اخى Desigen هل تتوقع لا يوجد حل غير left Outer join ؟

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#7

السلام عليكم

هذه مجرد محاولة

SELECT  *
FROM tbl_1
WHERE NameID  NOT IN (SELECT NameID  FROM tbl_2) And   TeacherID NOT IN (SELECT TeacherID FROM tbl_2)

تم تعديل هذه المشاركة بواسطة alibukheet في 20 مارس 2006 في 11:09

العراق - البصرة

#8

السلام عليكم يا شباب :

حصل خير أخي waleedhm ربما لم أوضح سؤالي جيداً على كل كسبنا مشاركتك الحلوة :)

بالنسبة لتجربتك أخي الكريم alibukheet أظن أنها ستعطي نتائج غير صحيحة لأنها ستختبر كل حقل بمفرده بمعزل عن قيمة الحقل الاّخر

على كل سأجربها و شكراً لتجربتك معنا :D

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

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

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