الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

بخصوص استعلام

بدأه atlasarab في 13 أبريل 2011 · 4 رد · 425 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سؤال بخصوص استعلام

السلام عليكم

بالمختصر المفيد

عندي عمود في قاعدة البيانات وهو من نوع text

و فيه مصفوفة واحدة و عناصرها مفصولات ب الفارزة

الى الان واضح

والعناصر عبارة عن ارقام يعني كثير ارقام

,3,34,678,98467694,80676,989,867489,10,879,8674,76,,7,989,090,989,878,,,87878,8787,7687,

وهكذا في كل صف موجوده مصفوفة ارقام

ايه هذا السؤال صعب يا اطلس

السؤال

اريدبأستعلام واحد طبعا حتى يقل الشد على القاعدة

ان يعطيني الصفوف الي فيها العنصر المطلوب

يعني انا اريد رقم 3 و اريد الصفوف الي موجود بيها العنصر 3 ها ليس العنصر 33

لأن انا جربت like

والحقيقة ما نجحت

لأنها تبحث عن كلشي يشبه 3

احب اقول الكم هذا سؤالي منين اجى

في برنامج مثل فيس بووك واصدقاء والخ

نحتاج نضيف اصدقاء ب مصفوفة وطيعا احنا نتعامل مع ارقام

يعني عمر من الناس عنده اصدقاء 2,99,8,78,

وعمر كتب موضوع جديد

فانا فكرت قلت ليش ما اخلي في جدول المواضيع عمود جديد

يعني اضيف عمود جديد وهذا العمود فيه id

تبع عمر و اصدقاءة

يعني اذا عمر فتح الصفحة تبعة بيروح يبحث في المواضيع في عمود الاصدقاء فأذا وجد شي يخص عمر يجيبة طبعا عمر واصدقاءة

هسه انا اريد استعلام واحد بيكون ما يتعب القاعدة و يجيب لي شي مباشر

وشكرا

post-167206-068498300 1302726896_thumb.p

المرفقات
life5.png
#2

وعليكم السلام ورحمة الله وبركاته

يمكنك تحقيق مطلبك باستخدام الـ regular expression

مثلا و طبقا لطلبك (استخراج السجلات التي تحوي على الـ id رقم 3)

SELECT *
FROM `table_name`
WHERE `frnds_id`
REGEXP '(^|,)[3]{1}(,|$)'

هذا الاستعلام سيفي بالغرض

يمكنك جعل هذا الـ pattern دايناميكي بحيث يحقق لك ما تريد

فمثلا يمكننا القيام بالتالي :

$id = 123; // id of omar
$len = strlen((string)$id);
$res = mysql_query("SELECT * FROM `table_name` WHERE `frnds_id` REGEXP '(^|,)[".$id."]{".$len."}(,|$)';");

جرب هذه الطريقة و أخبرنا بالنتيجة

ملاحظة :

قد تستطيع التوصل لـ pattern أفضل من هذا لذلك حاول التفكير و البحث عن الأفضل

بتوفيق الله...

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 14 أبريل 2011 في 02:39

Everything will be fine when we TALK LESS, DO MORE


#4

شكرا وهوالمطلوب

نجح بشكل جيد

لكن الا تضن ان هذا الاستعلام يأثر على قاعدة البيانات؟؟؟

اذا في اسهل على القاعدة؟

اتصور انت افتهمت قصدي

select id, title, content from table-name where........اذا في اسهل على القاعدة

اتوقع ان mysql

فيها شي يسهل علينا وعليها

وشكرا

#5

الاستعلام لن يكون له أي تأثير سلبي على قاعدة البيانات فهو كأي استعلام آخر

ولكن الطريقة الأفضل و الأصح لك و لقاعدة البيانات في حالة كحالتك

أن تعمل وفق قواعد الـ Normal forms

http://www.dummies.c...rmal-forms.html

فمن غير المحبذ أن يحتوي الحقل الواحد على أكثر من قيمة في حالة مماثلة يفضل العمل على جدول منفصل مع FK

والله أعلم

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 14 أبريل 2011 في 21:16

Everything will be fine when we TALK LESS, DO MORE


مواضيع مشابهة