بعد إذن الأستاذ Bluemind والاخ ابولميس
اخي العزيز
كتوضيح بسيط فإن جملة Sql الخاصة بالإستعلام الإلحاقي تتكون من أجزاء كما يلي:
- جزء خاص بتحديد الحقول التي سيتم الإلحاق إليها ويجب تحديدها بالإسم وتكون بالشكل التالي
INSERT INTO Tbl_Name_1 ( fld_1, fld_2, fld_3, ..., fld_n )
حيث Tbl_Name_1 هو إسم الجدول المراد إلحاق البيانات به و fld_1 و fld_2 و fld_3 ... هي الحقول في هذا الجدول
- جزء خاص بمصدر البيانات التي سيتم إلحاقها سواء كانت ستؤخذ من جدول أو إستعلام أو قيم محسوبة ..... الخ
ولكن ما يجب مراعاته هنا أمرين
الأول : أن يكون عدد الحقول نفس عدد الحقول الموجوده في جملة Sql في الجزء السابق
الثاني : أن تحتوي تلك الحقول على قيم من نفس نوع بيانات الحقل اي بيانات نصية للحقول النصية ورقمية للرقمية وتاريخ ووقت لحقول التاريخ ... وهكذا
وتكون جملة Sql في هذا الجزء هي جملة Select عادية كما يلي:-
SELECT fld_1, fld_2, fld_2,......., fld_n
FROM Tbl_Name_2;
- الجزء (أو الأجزاء المتبقية) وهي مايخص معايير الإستعلام والتجميع وخلافه وهي إختيارية بحسب الحاجة وليست ضرورية دائماً
بالعودة إلى مثالك سنجد أنه بالرغم أن شكل الإستعلام في وضع التصميم لا يظهر أي مشكلة ولكن عند فتح جملة Sql سنجدها كما يلي:-
INSERT INTO master_all_data ( awb, [issue name] )
SELECT Awb_Created.Zip_5, Awb_Created.Br_Code, *
FROM Awb_Created;
وهنا ستجد أنه في الجزء الأول كانت جملة Sql تخبرنا عن حقلين فقط يراد إلحاق بيانات إليهما وهما ( awb و issue name )
في الجزء الثاني من الجملة وقعت في خطأين
الأول - أنك جعلتها تحتوي على أكثر من حقلين
الثاني - وهو الأهم أنك إستخدمت (*) للدلالة على جميع حقول الجدول وللعلم فإنها لن تعمل في هذا النوع من الإستعلامات
أي أنك لو قمت بحذف (, *) أي النجمة والفاصلة التي قبلها سيعمل الإستعلام دون مشاكل بإذن الله
في الأخير أرجو أن لا أكون قد أطلت الشرح وأن يكون شرحاً واضحاً
تحياتي,,,