لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
مساعدة في 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__);
تاريخ البداية: 20 / يناير / 2012 الساعة 0:6 اخر نشاط: 20 / يناير / 2012 الساعة 18:53 query mysql PHP

ماذا تريد ان تفعل بالتحديد؟
20 / يناير / 2012 الساعة 0:7

اريد ان اتعلم الشروط داخل mysql
قمتلا انا عندي منتدى به مواضيع مخفية
فانا اريد ان اجعل المواضيع المخفية بكل عضو تضهر له عندما يسجل الدخول
استطيع فعلها بشروط في php يعني ب if لكن انا اريدها ب mysql
20 / يناير / 2012 الساعة 0:42

ولماذا يا اخى ، اعطى كل شىء وظيفته .. اعمل دالة لهذا ودالة لهذا لان شروط الماى سكل صعبة ومرهقة للسيرفر
20 / يناير / 2012 الساعة 0:44

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
منذ: 20 / يناير / 2012 الساعة 11:45

تعديل: Imad
منذ: 20 / يناير / 2012 الساعة 11:47

يمكن عمل هذا يإعطاء كل عضو 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
منذ: 20 / يناير / 2012 الساعة 2:35

نعم اخي الغالي انا مستخدم level في النسخة
لكن كنت اريد ان اعمل برمجية مميزة باستعمال الشروط في mysql متل هده
,IF(c.hidden = 0 AND c.level = 0,1,0) AS allowcat,

انا اعرف عمل inner join و left join و right join
لكن لا اعرف ما معنى AS
20 / يناير / 2012 الساعة 8:33

معنى AS ، هى انها تساوى الحقل الخارج بالاسم جديد مثال select article.title,cat.title as category_title
فهذه جعلت الحقل cat.title يساوى category_title اى عندما تستدعيه فى البى اتش بى ستكتب category_title وهذه تستعمل لو فى حقلين شبه بعض فى جدولين .. فبيفصل ما بينهم بتغير اسم واحد منهم وهميا فى الاستعلام بس
20 / يناير / 2012 الساعة 10:6

ويوجد ايضا دالة IN من الممكن ان تفيدك فى اختيار اكثر من شىء where id IN(1,2,3,4,5)
20 / يناير / 2012 الساعة 10:7

يمكن عمل هذا و لا يوجد شيء مستحيل و أي شيء في البرمجة يوجد العديد من الطرق اليه و لكن زي ما قال الأخ علاء و مثل ما أرى أنه لا يوجد منها فائدة و ستؤدي الى تقل الاستعلام, فكل شيء في البرمجة له غرضه و له وظيفته
20 / يناير / 2012 الساعة 11:30

كانت الامور بدات تتوضح الى ان وصلت الى هده النقطة "وهذه تستعمل لو فى حقلين شبه بعض فى جدولين ..",
انا عندي استعلام يوجد به التالي u.status AS authorstatus
و LEFT JOIN user AS u ON(u.id = t.author)
و topic AS t
يوجد جدول اسمه user تم تغييره بواسطة As الى u ويوجد جدول اسمه topic تم تغيير اسمه الى t
والحقول يوجد حقل status و id في user وحقل author في topic
وتم دمج id حدول user مع author في جدول toptic عن طريق ON(u.id = t.author
وايضا تم اعادة تسمية status بحقل اخر غير موجود authorstatus عن طريق u.status AS authorstatus
وهدا هو الاستعلام كله

يعني يمكنني ان اعمل As فقط لاعطاء اسماء افتراضية ؟
والله حيرتني متل هته الاستعلامات فوق واريد ان اعمل متلها لانها تغنيني عن عمل 4 استعلامات.
20 / يناير / 2012 الساعة 14:0

الاستعلامات الكبيرة ... تكون معقدة للغاية .. انا فى كل مرة احاول ان اصل لافضل اسلوب باقل استعلام ممكن وعن طريق البى اتش بى .. فمعظم استعلامات الاعضاء هذه تتم عن طريق التبديل بالبى اتش بى وليست الاستعلامات .. لان الاستعلامات الكبيرة لو فى عدد زوار ازيد من 1500 اونلاين .. الموقع راح يتوقف كليا عن العمل .. وستضطر لتركيب نظام كاش لقاعدة البيانات
20 / يناير / 2012 الساعة 14:6

اممم توجد نسخة تستعمل استعلامات متل تلك واعرف مبرمجيها ما شاء الله عليه
هده هي alamsport.com
20 / يناير / 2012 الساعة 14:10

كثير من المواقع تستعمل استعلامات معقدة .. جدا .. فيوجد اشياء لا تعمل دونها .. ولكن تؤثر على السيرفر وايضا استعمال استعلامات صغيرة كثيرا يرهق السيرفر جدا .. فالافضل هو الوسط
20 / يناير / 2012 الساعة 14:14

انا مشكلت هي كالاتي :
ابرمج نسخة منتديات لكن صادفتني هده المشكلة
عندما يضع عضو ما موضوعا يجب ان ينتضر موافقة المشرف.
لكني اريد ان اعمل شرطا بان الموضوع يجب ان يضهر للمشرف وكاتب الموضوع فقط وقد عملت دلك باتباعي هدا الشرط
if($ts['hidden']==0||$ts['hidden']==1&&$ts['author']==uid||$ts['hidden']==1&&$this->Mode($f)>=1){
شرط طويل نوعا ما وقد نفع
لكن توجد مواضيع اخرى مخفية لنفس العضو او مجمدة واريد ان اعمل لها نفس الشرط لكن واجهت المشكل
20 / يناير / 2012 الساعة 14:14

هل من الممكن توضيح وظيفة كل متغير؟ انا لا استطيع ان احكم او اعدل دون ان اعرف وظيفة كل واحد منهم
20 / يناير / 2012 الساعة 14:22

جرب ان تفصل بين الشروط هكذا وياريت نعرف ماهو uid
if( (!$ts['hidden'] || $ts['hidden']) && ($ts['author']==uid || $ts['hidden'] ) && $this->Mode($f) >=1 )
20 / يناير / 2012 الساعة 14:25

شكرا لكم اخواني
فقد قمت بحل المشكل عن طريق نقل استعلام له نفس الدور وغيرت في تاحول ونجح معي
بالنسبة ل uid هي define لمتغير يستخرج id العضو الدي قام بتسيل الدخول
اما الدالة Mode فهي تعطي تصريح التعديل على خيارات المواضيع حسب الرتبة
شكرا لكم جميعا على المتابعة
تحياتي
20 / يناير / 2012 الساعة 17:28

التعقيد ليس هو سبب النجاح بل العكس,و موقع عالم سبور ليس مثالا لتبني عليه موقعك مع احترامي للجميع , إلا أن صاحب الموقع انفق اموال كثيرة على الفاضي, لابرمجة و لا محتوى!!, و لو تم انفاق تلك الاموال على مشروع في المستوى كان سينافس المواقع الكبرى
20 / يناير / 2012 الساعة 18:53

هذه الشروحات وجتها فى اليوتيوب والكثير على القائمة الجانبية لليتيوب

بواسطة: علاء
منذ: 20 / يناير / 2012 الساعة 0:43

جزاك الله خيرا اخي
20 / يناير / 2012 الساعة 8:33

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة