خالد نور قام بنشر مارس 9, 2006 قام بنشر مارس 9, 2006 الرجاء عمل استعلام يظهر اسماء الغياب اى الاسماء التى ليست امامها تاريخ فى جدول رقم 2 علما بان جدول رقم واحد هو الاساس اى به جميع الاسماء الملف المرفق من هنا: http://www.officena.net/ib/index.php?showtopic=11563 ولكم منى التحية
امير عاطف قام بنشر مارس 9, 2006 قام بنشر مارس 9, 2006 قم بعمل استعلام ... ثم قم بعمل نسخ لجملة الــ sql التاليه داخل عرض الـ sql للإستعلام SELECT Table1.NAME, Table2.DATE FROM Table1 LEFT JOIN Table2 ON Table1.ID = Table2.ID;
خالد نور قام بنشر مارس 11, 2006 الكاتب قام بنشر مارس 11, 2006 الاخ العزيز عاطف اولا شكرا على تواصلك ولكن جربت ماقلت ولم تفلح التجربة فالاستعلام يظهر جميع الاسماء لكن المطلوب ان يظهر اسماء الغياب فقط الغير مكتوب امامهم تاريخ حضور وهناك مثال مرفق للمطلوب وانا فى الانتظار بارك الله فى الجميع
امير عاطف قام بنشر مارس 11, 2006 قام بنشر مارس 11, 2006 SELECT Table1.NAME, Table2.DATE FROM Table1 LEFT JOIN Table2 ON Table1.CODE = Table2.CODE WHERE (((Table2.DATE) Is Null));
خالد نور قام بنشر مارس 11, 2006 الكاتب قام بنشر مارس 11, 2006 لو ممكن اخ عاطف شرح الكود فهو يعمل جيد جدا حتى استفيد فى تطبيقه فى مشاريع اخرى والفرق بين INNER & LEFT حيث تغيرهما ادى الى النتيجة المطلوبة شاكر لسيادتكم جدااااااا
ahmedbadr قام بنشر مارس 11, 2006 قام بنشر مارس 11, 2006 بسم الله... عند إنشاء استعلام من أكثر من جدول، أنت تربط في عبارة الاستعلام بين الجداول بواسطة حقل مشترك، وتستخدم لذلك كلمة JOIN فيما يشبه الشكل: FROM table1 X JOIN table2 ON table1.common_field = table2.common_field table1 هو الجدول الأول، وtable2 طبعاً هو الجدول الثاني... common_field هو اسم الحقل المشترك بينهما، أما X هذه فقد تكون: 1. INNER: أنت بهذا تأمر الأكسس بأن يربط بين الجدولين (يجمع حقول الجدول الأول إلى جانب حقول الجدول الثاني في سطر واحد) بناء على تساوي القيم في الحقلين المشتركين، وليس هذا فقط... بل (وهو بيت القصيد) أن لا يحضر أي صف من الجدول الأول في النتيجة إلا إذا وجد في الحقل المشترك ما يساويه في الجدول الثاني، والعكس صحيح: يجب أن يكون لأي صف يظهر في النتيجة من الجدول الثاني ما يساويه في قيمة الحق المشترك من الجدول الأول (انتظر المثال إذا لم تفهم هذا...). 2. LEFT: هنا أيضاً تتم عملية الربط بناء على تساوي قيم الحقل المشترك في الجدول الأول والثاني، ولكن الفرض هنا أن يظهر في نتيجة الاستعلام كل صفوف الجدول الأيسر (Left) وهو الجدول الأول. هذه الصفوف تحوي في الحقل المشترك على قيم، الآن أحضر من الجدول الثاني فقط الصفوف التي تساوي قيم حقلها المشترك القيم في الجدول الأول...(أيضاً انتظر المثال؛ فبالمثال يتضح المقال). 3. RIGHT: أظن هذا مفهوماً... اشترط هنا أن يحضر صفوف الجدول الثاني (الأيمن Right) كلها بغض النظر عن وجود صفوف في الجدول الآخر تتساوى معها في قيم الحقل المشترك...(لا، لا تنتظر أكثر، فالمثال في السطر التالي مباشرة...). افرض أن لديك جدولين: واحد للطلاب، والآخر يرتبط فيه كل طالب بهواية أو أكثر... بعض الطلاب ليس لديهم هوايات، وبعض الهوايات لا يرتبط بها أي طالب (كالقراءة مثلاً )... أنت تريد أن تظهر في استعلام واحد الطلاب مع هوايات كل منهم... إذا استخدمت INNER JOIN فأنت تقول للأكسس: أحضر في النتيجة فقط الطلاب الذين لديهم هوايات، والهوايات التي ترتبط بطلاب؛ الطلاب الذين ليس لديهم هوايات لن يظهروا، والسبب أن الحقل المشترك بين الجدولين هو رقم الطالب، ولكن رقم الطالب في الجدول الأول (الطلاب) لا يجد ما يساويه في حقل رقم الطالب في جدول الهوايات (لأن الطالب ليس لديه هوايات: بدأنا نكرر...)، وبالمثل الهوايات التي لا يرتبط بها أي طالب حقل رقم الطالب فيها خالي... أما إذا استخدمت LEFT JOIN فهذا معناه أنك تريد كل الطلاب، وفقط الهوايات التي ترتبط بطلاب... فكر فيها هكذا: أحضر كل صفوف الطلاب، ثم اختر من جدول الهوايات فقط الصفوف التي تحوي في حقل رقم الطالب على رقم طالب... وطبعاً، RIGHT JOIN تحضر كل الهوايات بغض النظر عن وجود طلاب مرتبطين بها أم لا، و تحضر بيانات الطلاب الذين لهم هوايات (يتساوى حقل رقم الطالب في جدول الهوايات مع حقل رقم الطالب في جدول الطلاب)... أرجو أن تكون الفكرة قد وصلت، وإن لم تصل بعد، فتأمل أكثر قليلاً، وإلا فلا تتردد في الاستفسار... ملحوظة: المثال مبسط لتوضيح الفكرة، وإلا فالصورة المثلى للطلاب وهواياتهم تكون بثلاثة جداول: واحد للطلاب، والثاني لبيانات الهوايات، والثالث لربط كل طالب مع هواية (حقلان: رقم الطالب ورقم الهواية).
خالد نور قام بنشر مارس 12, 2006 الكاتب قام بنشر مارس 12, 2006 شكرا اخى العزيز على هذه المعلومات القيمة جزاك الله خيرا وبإذن الله تعالى سوف اقوم بتنفيذها ودراستها جيدا واسمح لى اذا وجدت صعوبة فيها أن أطلب منك مثال توضيحى واخيرا لك التحية اخى احمد والاخ العزيز أميرعاطف ولكل اعضاء منتدانا الكريم
خالد نور قام بنشر مارس 12, 2006 الكاتب قام بنشر مارس 12, 2006 عد اذنك ياخى العزيز طريقة عمل استعلام لايظهر القيم المكررة اى يظهرها مرة واحدة فقط فقد ظهرت لى مشكلة اخرى هى ان العامل اذا ختم دخول مرتين فى نفس اليوم يظهر مرتين فى الاستعلام مما يؤثر على عدد الحضور بالزيادة واسف على طلباتى الزيادة وتقبلو تحياتى للجميع
ahmedbadr قام بنشر مارس 12, 2006 قام بنشر مارس 12, 2006 من الطبيعي أن يظهرمرتين في الجداول و الا كيف سيقوم بتسجيل الحضور و بعد ذلك الانصراف هل تريد أن يظهر الاسم مرة واحدة في النماذج أم في التقارير وضحأين تريد حتي يتسني لنا أو لأي أخ أن يستطيع الرد عليك أحمد بدر
خالد نور قام بنشر مارس 12, 2006 الكاتب قام بنشر مارس 12, 2006 خى العزيز احمد لك الشكر والتحية اريد ان يظهر الاسماء فى الاستعلام فقط بدون تكرار اكواد العمال حتى يظهر كام عامل حاضر ارجو ان اكون اوضحت لسيادتك فكرتى واسف على ازعاجك اخى الكريم
ahmedbadr قام بنشر مارس 12, 2006 قام بنشر مارس 12, 2006 و لكنك من الممكن أن تفقد بعض البيانات في هذه الحالة بمعني أقرب أنه إذا كان لديك موظف يسجل حضور و أنصراف في هذه الحالة سيأخذ أحدهما و ليس كلاهم بذلك تكون فقد جزء من البيانت عند عرضها في الاستعلام . علي ما أعتقد أن هذا صحيح و إذا كان هناك توضيح فأرجو أن توضحه علما بأن أنه يمكن ذلك من خلال النماذج مع عرض كل البيانات التي تحتاجها و كذلك التقارير من خلال ما يسمي بالجروب و يمكن معرفتها من خلال الرابط التالي :- http://www.officena.net/ib/index.php?showtopic=11547
خالد نور قام بنشر مارس 12, 2006 الكاتب قام بنشر مارس 12, 2006 شكرا اخى الكريم على تواصلك والعملية ليست لها علاقة بفقد البيانات فالعملية هى استعلام فقط لمعرفة عدد الحضور ووظائفهم فقط وليست لها علاقة بحذف اى بيانات من الجداول سوف اذهب للرابط والاطلاع على مافيه تقبل تحياتى اخى العزيز احمد بدر
ahmedbadr قام بنشر مارس 12, 2006 قام بنشر مارس 12, 2006 أنا قولت فقد للبيانات عند العرض في الاستعلام و ليس مسح البيانات من القاعدة و يمكنك عمله بالاستعلام في حالة التصميم و تختار من أسفل الحقل الذي يتم فيه التكرار و تختار جروب
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.