النتائج 1 إلى 7 من 7

الموضوع: مقارنة مصفوفتين في استعلام SQL

  1. #1

    مقارنة مصفوفتين في استعلام SQL



    السلام عليكم اخوتي

    لدي مشكلة بحثت عن حل لها مطولاً و لم اجد ، ارجو ممن يملك حلاً ان يجود به هنا .

    الفكرة كالتالي :

    لدي مثلاً جدول للاخبار و الخبر يقع في عدة تصانيف و هي مخزنة على شكل مصفوفة
    الخبر الاول في التصنيفات 2,5,7
    الخبر الثاني في التصنيفات 2,4,8

    اريد جلب الاخبار التي تصنيفها هو 4,8

    ما هو الاستعلام الذي يجب ان اطبقه

    جربت IN و جربت FIND_IN_SET و لم يفلح الأمر فهل من طريقة معينة لعمل ذلك .

    اشكركم مسبقاً .





    __________________
    مبرمج php للتواصل : roudyhermez(at)hotmail(dot)com
    مدونتي PlusCSS


  2. #2
    عضو شرف
    تاريخ التسجيل
    Mar 2005
    المشاركات
    943


    ياليت تضع مزيد من التفصيل او الكويري الي ما اشتغل معك .





    __________________
    @jawany

  3. #3
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    172


    و عليكم السلام

    لدي مشكلة بحثت عن حل لها مطولاً و لم اجد ، ارجو ممن يملك حلاً ان يجود به هنا .
    لم تجد حل لأن هيكلة القاعدة غير مستخدمة و تعتبر سيئة في المجال التطبيقي، و النظري أيضا.

    حلك ببساطة يمكن في فصل حقل التصنيفات و جلعه في جدول منفصل.

    بمعنى، أنشئ جدول و أسمه "تصنيفات" أو categories_topics. يحوي على عمودين. الأول: "رقم الخبر". الثاني: "رقم التصنيف"

    إذا كان الموضوع رقم 1 مصنف في تصنيف 5، 6 معناها جدول "تصنيفات" يحوي صفين.
    الصف الأول: رقم الخبر: 1، رقم التصنيف: 5
    الصف الثاني: رقم الخبر: 1، رقم التصنيف: 6

    إذا أردت معرفة الأخبار تحت تصنيف 5 و 6، كل ما عليك فعله هو
    كود:
    select * from categories_topics where categories_topics.category_id IN (5,6)
    و أيضا INNER JOIN مع جدول الأخبار. هذه أفضل و أسرع طريقة أستطيع التفكير بها.

    أما حل لطريقتك، للأسف يوجد لكن طويل و ممل و غير مجدي و مهلك لمصادر الجهاز و قاعدة البيانات. حاول استخدام تصنيف واحد فقط بدلاُ من تصنيفين في استعلامك و أتوقع ستعمل. يعني:
    اريد جلب الاخبار التي تصنيفها هو 4,8
    حاول جلب الأخبار التي تصنيفها 4 فقط. هل تعلم؟

    رائد





    __________________
    "اقْــرَأ "
    اللهم ارزقنا حسن الختام

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,065


    الأخ رائد أوجز لك حل المشكلة و من وجهة نظرى أنه الحل الأمثل (optimum) لمشكلتك , ولكن تعال لنرى الحل الأسوء و الذى فعلاً سيستهلك موارد السيرفر بشكل كبير

    هذا الحل هو عن طريق البحث بإستخدام like فى (النص) المكون لقيم العناصر

    لدينا العناصر هى 5,6,7,4 و يمكن أن يكون ترتيبها بهذا الشكل 7,5,4,6 أو يكون بهذا الشكل 7,6,4,5

    إذن العنصر رقم 5 ممكن يكون على الشكل ... 5, أو على الشكل ,5 أو على الشكل ,5,

    إذن أنت بحاجه لتكوين إستعلام يبحث عن وجود العنصر 5 فى هذه الحالات الثلاثة ... ثم تكرر نفس عملية البحث بالنسبة للعناصر الآخرى

    و كأننا نقول أن الشكل النهائى للبحث عن العناصر 4,8 سيكون :


    كود PHP:

    select 
    from topics where

    cat_ids_field LIKE 
    "%,4" OR
    cat_ids_field LIKE "4,%" OR
    cat_ids_field LIKE "%,4,%" OR
    cat_ids_field LIKE "%,8" OR
    cat_ids_field LIKE "8,%" OR
    cat_ids_field LIKE "%,8,%" 
    و هذا الحل أبعد ما يكون عن الإحترافية





    التعديل الأخير تم بواسطة khashabawy ; 14-03-2013 الساعة 12:55 AM

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Oct 2012
    المشاركات
    146


    السلام عليكم

    الافضل كما قال الاخوة هو جدول الربط، لأن mysql قواعد بيانات relational

    لكن ما تقوله ممكن نظريًا عن طريق استخدام التعابير القياسية في الاستعلام
    او حتى انشاء دالة stored procedure
    لكن الامر اصعب من عمل جداول الربط
    لذا الافضل استخدامها من ناحية تصميمية وعملية

    http://www.marcogoncalves.com/2011/0...ing-into-rows/

    باستخدام دالة REGEX

    http://www.go4expert.com/articles/re...s-mysql-t2337/





    التعديل الأخير تم بواسطة أبو حميد ; 14-03-2013 الساعة 02:23 AM

  6. #6
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    172


    الأخ عبدالله كتبلك الحل الممل الطويل المهلك

    و يا عبدالله، نسيت تتأكد من حالة إذا كان مافي إلا تصنيف واحد، حتصير: http://shafrah.com/code/n0SIWNo





    __________________
    "اقْــرَأ "
    اللهم ارزقنا حسن الختام

  7. #7


    شكرا لكم و ما قصرتم ..

    فعلاً كما قال الاخ Cenrak استخدام جدول وسيط مع JOIN افضل بكثير من ناحية الاداء .

    اشكركم جميعاً مجدداً .





    __________________
    مبرمج php للتواصل : roudyhermez(at)hotmail(dot)com
    مدونتي PlusCSS





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض