اذهب إلى المحتوى
  • 0

جلب العناصر المميزة في بداية القائمة ثم مجموعة عشوائية من العناصر في استعلام SQL

Flutter Dev

السؤال

تحيه طيبه للجميع

لدي مجموعة من العناصر المختلفة في قاعدة البيانات كما ان لدي عمود باسم special بحيث ان هذا العمود يحتوي على قيمة 0 او 1 لو كان العنصر يحتوي على القيمة 1 يتم عرض هذا العنصر في ListView 

حاولت عمل ذلك من خلال الكود التالي وهو يعمل ولكن انا لا ارغب باستعمال listو كلاس model  للبيانات :

 Future<List<testiims>> Fetchitem() async {
    apiURL = 'https://***************';
    var response = await http.get(Uri.parse(apiURL));
    final items = json.decode(response.body);
    if (response.statusCode == 200) {
      List<testiims> listOfFruits = items.map<testiims>((json) {
        return testiims.fromJson(json);
      }).toList();
      listOfFruits.sort((a, b) => b.special.compareTo(a.special));//========================================

      return listOfFruits;

    } else {
      throw Exception('Failed to load data from Server.');
    }

  }



// لا ارغب باستعمال هذا القسم
class testiims {
  String special;

  testiims({
   this.special,

  });
  factory testiims.fromJson(Map<String, dynamic> json) {
    return testiims(

      special: json['Special'].toString(),

    );
  }
}

 

احتاج الى استعماله بشكل التالي او ليكون من خلال الكود التالي :

مباشر بدون استعمال كلاس model للبيانات 

  Future getdata() async {
    apiURL = 'https://*************;
    var response = await http.post(Uri.parse(apiURL));

    var responsebody=jsonDecode(response.body);
    
    //بهذا الشكل ==================================
  // responsebody.sort((a, b) => b.special.compareTo(a.special));
     // ==================================
    
    return responsebody;

  }

هل من طريقة لفعل ذلك؟ بهذا الشكل؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1
بتاريخ 5 دقائق مضت قال مروان مروان3:

المشكلة انني في استعلام sql استعمل مسبقا هذا الداله ORDER BY RAND() حتى يتم ترتيب باقي العناصر بشكل عشوائي في كل مره يقوم المستخدم بدخول الى الصفحة مع الحفاظ على المنتجات التي تحتوي رقم و1 ثابته دائما في اول القائمة لذلك اقوم بفعلها من خلال flutter

يمكن عمل أكثر من ترتريب بنفس عبارة اسعلام SQL

بتاريخ 6 دقائق مضت قال مروان مروان3:

ايضا انني اتجنب التغير بملفات php حتى لا يتوقف التطبيق الان لدى المستخدمين 

لايوجد مشكلة من تعديل ملف ضمن استعلام (طبعا أنت تجرب على localhost) ,وليس على سيرفر حقيقي يعمل

SELECT * 
    FROM table

ORDER BY special DESC, 
         RAND()

هكذا نرتب أو نعمل UNION لاستعلامين SQL

SELECT column1, column2, ...
FROM table_name
WHERE special = 1
ORDER BY RAND

UNION ALL

SELECT column1, column2, ...
FROM table_name
WHERE special = 0
ORDER BY RAND

نجلب كل شيء special و نرتبه بشكل عشوائي ثم الغير special  و نرتبه بشكل عشوائي

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1
بتاريخ 5 دقائق مضت قال مروان مروان3:

ترتيبهم اخوي بمعنا الذي يحتوي على رقم 1 في تلك الخانه سيكون اول القائمة بعدها تاتي التي تحمل الرقم 0 

المنتجات ذات الرقم 1 هيا منتجات مميزه او مواضيع مثبته تقدر تقول لذلك تكون ثابته في اعلى القائمة

أفضل ترتيب النتائج من استعلام SQL لكي لا يتأثر سرعة و سلاسلة التطبيق، 

حيث نستخدم Order By مع تحديد اسم الحقل secial مع DESC تنازلي ليتم عرض 1 قبل 0

SELECT column1, column2, ...
FROM table_name

ORDER BY special DESC;

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1
بتاريخ الآن قال مروان مروان3:

اهلا بك اخي الكريم

بمعنى انني سوف اعمل استعلامين الان ؟وسيتم الحفاظ على العناصر التي تحتوي على رقم 1 في اعلى القائمه والعناصر 0 اسفلهم مع عمل عشوائيه الئ الاثنين في نفس الوقت مع الحفاظ على مواقع التقسيمات ( المميزه والغير مميزه)؟

تمام

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 16 دقائق مضت قال Wael Aljamal:

هل تريد ترتيب العناصر أم فلترتهم؟ أي فقط استختلاص العناصر المميزة و عرضهم.

ترتيبهم اخوي بمعنا الذي يحتوي على رقم 1 في تلك الخانه سيكون اول القائمة بعدها تاتي التي تحمل الرقم 0 

المنتجات ذات الرقم 1 هيا منتجات مميزه او مواضيع مثبته تقدر تقول لذلك تكون ثابته في اعلى القائمة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 20 دقائق مضت قال Wael Aljamal:

أفضل ترتيب النتائج من استعلام SQL لكي لا يتأثر سرعة و سلاسلة التطبيق، 

حيث نستخدم Order By مع تحديد اسم الحقل secial مع DESC تنازلي ليتم عرض 1 قبل 0


SELECT column1, column2, ...
FROM table_name

ORDER BY special DESC;

 

اهلا اخي الكريم

المشكلة انني في استعلام sql استعمل مسبقا هذا الداله ORDER BY RAND() حتى يتم ترتيب باقي العناصر بشكل عشوائي في كل مره يقوم المستخدم بدخول الى الصفحة مع الحفاظ على المنتجات التي تحتوي رقم و1 ثابته دائما في اول القائمة لذلك اقوم بفعلها من خلال flutter

ايضا انني اتجنب التغير بملفات php حتى لا يتوقف التطبيق الان لدى المستخدمين 

لذلك كنت استعمل الدلة الذي ذكرتها في اول الموضوع ولكني لم اعرف استعمالها بشكل الدالة  الثانية

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 24 دقائق مضت قال Wael Aljamal:

يمكن عمل أكثر من ترتريب بنفس عبارة اسعلام SQL

لايوجد مشكلة من تعديل ملف ضمن استعلام (طبعا أنت تجرب على localhost) ,وليس على سيرفر حقيقي يعمل


SELECT * 
    FROM table

ORDER BY special DESC, 
         RAND()

هكذا نرتب أو نعمل UNION لاستعلامين SQL


SELECT column1, column2, ...
FROM table_name
WHERE special = 1
ORDER BY RAND

UNION ALL

SELECT column1, column2, ...
FROM table_name
WHERE special = 0
ORDER BY RAND

نجلب كل شيء special و نرتبه بشكل عشوائي ثم الغير special  و نرتبه بشكل عشوائي

اهلا بك اخي الكريم

بمعنى انني سوف اعمل استعلامين الان ؟وسيتم الحفاظ على العناصر التي تحتوي على رقم 1 في اعلى القائمه والعناصر 0 اسفلهم مع عمل عشوائيه الئ الاثنين في نفس الوقت مع الحفاظ على مواقع التقسيمات ( المميزه والغير مميزه)؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 8 ساعات قال Wael Aljamal:

يمكن عمل أكثر من ترتريب بنفس عبارة اسعلام SQL

لايوجد مشكلة من تعديل ملف ضمن استعلام (طبعا أنت تجرب على localhost) ,وليس على سيرفر حقيقي يعمل


SELECT * 
    FROM table

ORDER BY special DESC, 
         RAND()

هكذا نرتب أو نعمل UNION لاستعلامين SQL


SELECT column1, column2, ...
FROM table_name
WHERE special = 1
ORDER BY RAND

UNION ALL

SELECT column1, column2, ...
FROM table_name
WHERE special = 0
ORDER BY RAND

نجلب كل شيء special و نرتبه بشكل عشوائي ثم الغير special  و نرتبه بشكل عشوائي

اهلا اخي الكريم قمت بتطبيق 

ORDER BY special DESC, 
         RAND()

وهو يعمل بشكل ممتاز

كل الشكر لك اخي الكريم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...