UP
UP
UP
UP
UP
UP
وعليكم السلام اخي :)
المشكلة في كثير من الاحيان تكمن في ان صاحب السؤال يرفق بيانات تجريبية ، وعليها يجد الاجابة على سؤاله ،
ولكنه يتفاجئ (ويتفاجئ الشخص الذي اعطاه الاجابة) ، بأن الجواب لا ينطبق على بياناته الاصلية ، لأنها بإختصار تحتوي على مزيج من البيانات الغير موجودة في البيانات التجريبية!!
عندك مشكلة في بياناتك ، لهذا السبب DISTINCT لا يعمل ويعطي خطأ ،
لهذا السبب لا يعمل الكود الاصلي الذي اعطيتك:
SELECT Mid([name],1,InStr([name]," ")-1) AS a, ID.sex FROM ID;
لأنه يعمل على بيانات فيها مسافة بين الاسم الاول وبقية الاسماء ، مثل:
name محمد غباشى أحمد عبد الهادي عربي أبو الحجاج مصطفي سيد حسين
ولكني تفاجئت بأن هناك اسماء تحتوي على مسافات قبل الاسم الاول ، مثل:
name إعتماد محمد قناوى نوبية بصرى حسان زياد وليد سيد
وعليه ، غيرت الكود لكي يأخذ هذه الملاحظات ، فاصبح:
SELECT Mid(Trim([name]),1,InStr(Trim([name])," ")-1) AS a, ID.sex FROM ID;
ولكن DISTINCT لم يعمل في هذه البيانات كذلك ، مما يعني ان هناك ملاحظات اخرى تعرقله ،
وبعد وقت طويل من فحص البيانات ، اتضح بان هناك اسماء تحتوي على اسم واحد فقط ، مثل:
name جابر شيماء نردين
وتم تغيير الكود على اساسه كذلك ، متضرعا الى الله تعالى ان يكون هذا نهاية المشوار ، والحمدلله ، فكان هذا الكود هو الذي يعمل:
SELECT IIf(InStr(Trim([name])," "),Mid(Trim([name]),1,InStr(Trim([name])," ")-1),[name]) AS a, ID.sex FROM ID;
ولكن رفض اضافة كلمة DISTINCT ، فاستخدمت المجاميع بدلها ، فاصبحت المعادلة:
SELECT IIf(InStr(Trim([name])," "),Mid(Trim([name]),1,InStr(Trim([name])," ")-1),[name]) AS a, ID.sex FROM ID GROUP BY IIf(InStr(Trim([name])," "),Mid(Trim([name]),1,InStr(Trim([name])," ")-1),[name]), ID.sex;
وحصلت على 1316 اسم فريد (طبعا هذا الذي كان المفروض) ،
ولكني لما ازلت قيمة sex من الاستعلام ، اتضح ان مجموع الاسماء الفريدة هي 1194 ، بمعنى ان هناك 122 اسما فيهم مشاكل!!!!
وبعد التدقيق البسيط ، اتضح بأن هناك اسماء اعطيت للذكر والانثى (لاحظ المربع الاحمر) ، واسماء فيها همزة فوق الالف واخرى تحت الالف (لاحظ الدائرة الحمراء).
ولكن ، لديك الآن فرز للإسم الاول :)
جعفر
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…