مساعدة في mysql
السلام عليكم
ممكن اخواني شؤوحات لل mysql join بالعربي فأنا اريد ان اعمل شروطا داخل mysql وحرت في دالك فمتلا عندي هدا الاستعلان لقد حرت لطريقة عمل الشروط داخل mysql فاتمنى منكم المساعدة $db->query("SELECT t.id,t.hidden,t.sticky,t.moderate,t.status,t.trash,t.survey,t.archive,t.top,t.link,t.subject,t.author,t.puerto,t.ticon, t.lpauthor,t.date,t.lpdate,t.posts,t.views, u.name AS authorname,u.status AS authorstatus,u.level AS authorlevel,uu.name AS lpauthorname, uu.status AS lpauthorstatus,uu.level AS lpauthorlevel ,COUNT(p.id) AS postwait FROM ".prefix."topic AS t LEFT JOIN ".prefix."user AS u ON(u.id = t.author) LEFT JOIN ".prefix."user AS uu ON(uu.id = t.lpauthor) LEFT JOIN ".prefix."post AS p ON(p.moderate = 2 AND p.topicid = t.id) WHERE t.forumid = '$f' $sqlApprove GROUP BY t.id ORDER BY t.sticky DESC $sqlOrderBy LIMIT $pgLimit,";و هدا $db->query("SELECT c.id AS cid,c.subject AS csubject,c.status AS cstatus,c.monitor,c.hidemonhome, f.id AS fid,f.hidden,f.status,f.logo,f.subject,f.description,f.topics,f.posts,f.lpauthor, f.lpdate,f.hidemodhome,IF(".ulv." > 0,COUNT(DISTINCT uo.ip)+COUNT(DISTINCT v.ip),0) AS fonline,uu.name AS monitorname, u.name AS lpname,u.status AS lpstatus,u.level AS lplevel ,IF(c.hidden = 0 AND c.level = 0,1,0) AS allowcat,IF(f.hidden = 0 AND f.level = 0,1,0) AS allowforum FROM ".prefix."category AS c LEFT JOIN ".prefix."forum AS f ON(f.catid = c.id) LEFT JOIN ".prefix."useronline AS uo ON(f.id = uo.forumid AND uo.level < 4) LEFT JOIN ".prefix."visitors AS v ON(f.id = v.forumid) LEFT JOIN ".prefix."user AS u ON(u.id = f.lpauthor) LEFT JOIN ".prefix."user AS uu ON(uu.id = c.monitor) $checkSqlTable WHERE c.siteid = ".current_site." OR c.siteid = 3 GROUP BY f.id,c.id ORDER BY c.sort,f.sort ASC",__file__,__line__);
3 إجابات
لنفرض ان الجدول يوجد فيه هذه المعلومات
section: +----+--------------+ | id | title | +----+--------------+ | 1 | Morocco | | 2 | Saudi Arabia | | 3 | Egypt | | 4 | syria | | 5 | algerie | +----+--------------+و عندنا جدول ثاني آخر subject: +----+---------------------------+--------+ | id | title | sec_id | +----+---------------------------+--------+ | 1 | i love egypt and all arab | 3 | | 2 | i love Saudi arabia | 2 | | 3 | hola syria commo estas? | 4 | | 4 | bilad almalion shahid... | 5 | +----+---------------------------+--------+الآن شو دور AS AS معناها بالعربي كما أو مثل أو كما أن, يعني أنا أقول للسيرفر يجلب لي شيء من جدولين مع إعطائه رابط بين الجدولين, يعني ممكن يكون الرابط هو اي شيء مشترك يعني شيء موجود في الجدول الأول و الجدول الثاني. و سنستعمله هكذا select id.title,id as id سنستخرج البيانات مع الشرط أنه الايدي الأول يساوي الايدي 2 هذا و الله أعلم اللهم انفعني بما علمتني وعلمني ما ينفعني وزدني علما بواسطة: Imad تعديل: Imad 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا
يمكن عمل هذا يإعطاء كل عضو Level معين يعني الزائر Level 1 العضو Level 2 و هكذا عند الاستعلام ستظهر المواضيع حسب Level يعني لو العضو زائر لن تظهر له
أما الأمر Join في Mysql هو باختصار جلب النتائج من جدولين في قاعدة البيانات يكون بينهم رابط يعني على سبيل المثال لدينا جدول يحتوي على المقالات و جدول على الردود, نقوم بجلب المقالات و الردود بواسطة شيء مشترك في الجدول مثل الايدي مثلا. ده مثال SELECT news.*, views.* FROM news AS news LEFT JOIN views AS views ON (news.id = views.id) WHERE news.dateline > 1199554 ORDER BY news.title LIMIT 0, 10 وضح بالضبط ما تريد الاستعلام عنه و سنساعدك ان شاء الله اللهم انفعني بما علمتني وعلمني ما ينفعني وزدني علما بواسطة: Imad 0 من 0 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا نعم اخي الغالي انا مستخدم level في النسخة معنى AS ، هى انها تساوى الحقل الخارج بالاسم جديد مثال select article.title,cat.title as category_title ويوجد ايضا دالة IN من الممكن ان تفيدك فى اختيار اكثر من شىء where id IN(1,2,3,4,5) يمكن عمل هذا و لا يوجد شيء مستحيل و أي شيء في البرمجة يوجد العديد من الطرق اليه و لكن زي ما قال الأخ علاء و مثل ما أرى أنه لا يوجد منها فائدة و ستؤدي الى تقل الاستعلام, فكل شيء في البرمجة له غرضه و له وظيفته كانت الامور بدات تتوضح الى ان وصلت الى هده النقطة "وهذه تستعمل لو فى حقلين شبه بعض فى جدولين ..", الاستعلامات الكبيرة ... تكون معقدة للغاية .. انا فى كل مرة احاول ان اصل لافضل اسلوب باقل استعلام ممكن وعن طريق البى اتش بى .. فمعظم استعلامات الاعضاء هذه تتم عن طريق التبديل بالبى اتش بى وليست الاستعلامات .. لان الاستعلامات الكبيرة لو فى عدد زوار ازيد من 1500 اونلاين .. الموقع راح يتوقف كليا عن العمل .. وستضطر لتركيب نظام كاش لقاعدة البيانات اممم توجد نسخة تستعمل استعلامات متل تلك واعرف مبرمجيها ما شاء الله عليه كثير من المواقع تستعمل استعلامات معقدة .. جدا .. فيوجد اشياء لا تعمل دونها .. ولكن تؤثر على السيرفر وايضا استعمال استعلامات صغيرة كثيرا يرهق السيرفر جدا .. فالافضل هو الوسط انا مشكلت هي كالاتي : هل من الممكن توضيح وظيفة كل متغير؟ انا لا استطيع ان احكم او اعدل دون ان اعرف وظيفة كل واحد منهم جرب ان تفصل بين الشروط هكذا وياريت نعرف ماهو uid شكرا لكم اخواني التعقيد ليس هو سبب النجاح بل العكس,و موقع عالم سبور ليس مثالا لتبني عليه موقعك مع احترامي للجميع , إلا أن صاحب الموقع انفق اموال كثيرة على الفاضي, لابرمجة و لا محتوى!!, و لو تم انفاق تلك الاموال على مشروع في المستوى كان سينافس المواقع الكبرى
هذه الشروحات وجتها فى اليوتيوب والكثير على القائمة الجانبية لليتيوب
بواسطة: علاء 2 من 2 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا جزاك الله خيرا اخي |
ماذا تريد ان تفعل بالتحديد؟
20 / يناير / 2012 الساعة 0:7
اريد ان اتعلم الشروط داخل mysql
قمتلا انا عندي منتدى به مواضيع مخفية
فانا اريد ان اجعل المواضيع المخفية بكل عضو تضهر له عندما يسجل الدخول
استطيع فعلها بشروط في php يعني ب if لكن انا اريدها ب mysql
20 / يناير / 2012 الساعة 0:42
ولماذا يا اخى ، اعطى كل شىء وظيفته .. اعمل دالة لهذا ودالة لهذا لان شروط الماى سكل صعبة ومرهقة للسيرفر
20 / يناير / 2012 الساعة 0:44