عرض مشاركة واحدة
قديم 19-08-2015, 04:31 PM   #1

Hamza FiGo



الصورة الرمزية Hamza FiGo

مـديـر عـام

• الانـتـسـاب » Dec 2007
• رقـم العـضـويـة » 6993
• المشـــاركـات » 6,157
• الـدولـة » Cairo
• الـهـوايـة » Helping ppl
• اسـم الـسـيـرفـر » Private Server
• الـجـنـس » Male
• نقـاط التقييم » 973
Hamza FiGo صـانـع للابـداعHamza FiGo صـانـع للابـداعHamza FiGo صـانـع للابـداعHamza FiGo صـانـع للابـداعHamza FiGo صـانـع للابـداعHamza FiGo صـانـع للابـداعHamza FiGo صـانـع للابـداعHamza FiGo صـانـع للابـداع

Hamza FiGo غير متواجد حالياً

12310  


إرسال رسالة عبر Yahoo إلى Hamza FiGo إرسال رسالة عبر Skype إلى Hamza FiGo

اوسمتي

(30) معلومات بسيطة عن عمل Query



بسم الله الرحمن الرحيم

اولا الكلام دا للمبتدئين فقط. ودي كبداية تفهم فية بدايات الــ Query وهحاول اكون بسيط

لما تيجي تعمل كيوري بتفتح الــ SQL طبعا بيجيلك في الاول الاي دي والباس المهم بتكتبهم والــ SQL بيفتح بالمنظر دا



علي الشمال هيكون عندك الداتا بيز بتاعتك. سيبك من الهري اللي عندي دا ^^

المهم هنتعلم دلوقتي مثلا علي ازاي تعرف كل المعلومات عن شخصية معينة. يعني ليفل كام و HP-MP وهكذا

هنيجي علي SRO_VT_SHARD دا اللي بيتسجل فيها كل حاجة في السيرفر. وكليك يمين ونختار New Query هيظهر بالمنظر دا



تمام كدا. اول امر لازم نكون عارفينه هو SELECT طبعا من اسمة مفهوم معناه. المهم هنكتب SELECT. طيب بعد كدة احنا عايزين نعرف اية بالظبط؟

احنا قولنا عايزين نعرف كل حاجة عن مثلا شخصية معينة. يبقي نكتب بعدها * . نجمه معناها يختار السطر كلة . لو عايزين نعرف الاي دي بتاع الشخصية نكتب ID وهكذا

المهم هيكون بالمنظر دا



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

SELECT * FROM

طيب احنا قولنا معلومات عن شخصية. يبقي منين؟ يبقي من _Char مظبوط؟ يبقي هيكون بالشكل دا



وانت بتكتب _Char هيجيلك ليستا دي بتساعدك انك تعرف اللي انت عايزة من اي مكان علشان لو مش بتعرف انجليزي كويس هو بيديلك الاختيارات وانت بتدوس عليها مرتين

لحد دلوقتي تمام. طيب احنا قولنا هنستعلم عن شخصية معينه يعني هنستعلم باسم الشخصية يبقي الامر بتاع بيبدا بــ WHERE واسم الشخصية في _Char لو فتحتها هيكون اسمها CharName16



بمعني اننا لو بنستعلم باسم الشخصية يبقي نكتب اسم العمود يبقي هيكون WHERE CharName16 . لو مثلا هنستعلم بالليفل هيكون WHERE MaxLevel . تمام ؟

احنا وصلنا لحد كدة



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

طيب احنا كدة اختارنا اسم العمود. طيب نكتب فين بقا اسم الشخصية؟ يبقي لما نحدد المكان اللي هيختار بية نكتب بقا اسم الشخصية بس هتكون بالمنظر دا



Like يعني هيستعلم من Char ويروح علي العمود CharName16 ويختار اسم الشخصية

'%Hamza%' علامة % دي معناها يختار اي اسم فيه كلمة Hamza . يعني لو عندك شخصيات مثلا باسم MrHamza - Mr_Hamza هيجيبهم كلهم .

في النهاية علشان ندي الامر انه يبدا البحث ندوس علي F5 في الكيبورد او Execute في البرنامج



جالك تحت السطر كله اللي انت كنت عايز تستعلم عنه اللي اهو باسم الشخصية

مثلا لو هنستعلم عن اسكيل. يبقي هنستعلم بالكود بتاعها. هتجيب الكود بتاعها من textdata_equip&skill
عايز تعرف بقا كل حاجة عن الاسكيل دي

يبقي الكيوري هيكون بالمنظر دا



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

واتمني اني قدرت اوصل المعلومة علي اد ما قدرت

----------------------------------------------------------------------------------------------------------------------------

تمت اضافة المزيد من
الاستاذ عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]

*****************

توضيح بسيط للناس الجديدة في كتابة الاستعلامات.
الصيغة العامة لجملة SELECT هى:

كود:
SELECT [column_name] FROM [table_name] WHERE [criteria]


لو حتجيب الاعممدة كلها حتستخدم علامة النجمة *
طبعًا column_name هى اسم العمود و table_name اسم الجدول

بالنسبة للـ criteria فهى الشرط
لو محطناش WHERE واللى بعدها فحيجيب لنا البيانات كلها .. احنا عايزين نحط شرط معين يجيب البيانات على اساسه .. فيه نوعين من الشرط.
تساوى تام وتساوى جزئى

• لو قلنا
كود:
WHERE CharName16 = 'Hamza'

يبقى حيجيب اسم الشخصية لازم يكون Hamza بالضبط
Hamza1 مش حيجيبوا
MrHamza مش حيجيبوا
مع ملاحظة ان المتغيرات الشرطية زى كلمة Hamza لازم تتحط بين العلامة دى ' ( من حرف الـ ط في الكيبورد )

• النوع التانى اللى هو تساوى جزئى LIKE
لو قلنا
كود:
WHERE CharName16 LIKE 'Hamza'


مش حتفرق في حاجة .. انت محددتش هنا انت عايز Hamza في أى مكان ولا في الاول بس ولا في الآخر بس

لو عايزها في الاول بس يبقى
كود:
WHERE CharName16 LIKE 'Hamza%'


علامة الـ % معناها ان يكون في مكانها اى حاجة .. او مفيش مكانها حاجة .. معنى كدة انه حيدور على كلمة Hamza في الأول بس .. بعيدًا عن فيه بعدها حاجة او لا
يعنى هنا يجيب Hamza و Hamza1 و Hamza20 بس مش حيجيب MrHamza مثلًا !

على العكس لو قلنا
كود:
WHERE CharName16 LIKE '%Hamza'


يبقى هنا الشرط انه يدور على Hamza في الآخر بعيدًا عن فيه قبلها حاجة او لا ..
يعنى هنا يجيب MrHamza و يجيب Hamza .. بس مش حيجيب Hamza1

لو عايزها في اي مكان يبقى تحط علامة % في الأول وفى الآخر
كود:
WHERE CharName16 LIKE '%Hamza%'


هنا انت بتقوله دورلى على اي حاجة فيها Hamza .. قبلها حاجة مش قبلها حاجة او بعدها حاجة مش بعدها حاجة .. مش فارقة
هنا يجيب
Hamza و Hamza1 و Hamza20 و MrHamza و MrHamza10

* كل اللى فات دة كان مُجرد امثلة فقط. طبعًا انت مش مُرتبط بـكلمة Hamza ولا Mr ولا الارقام اللى انا حاططها :)


اتمنى تكون اضافتى فادتكم بشىء .


----------------------------------------------------------------------------------------------------------------------------

والاستاذ عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
********************

الجزء التاني من Select انك ممكن تستخدم الامر كذا مرة فى نفس الكيوري عشان تجيب متغير او اكثر ،،

مثال : انا مثلاً عاوز اجيب الـ Username بتاع اي كراكتر ،، ومش عندي Eva tools او بمعني اصح عاوز اتعلم ازاي اجيبه من الـ Database مباشرة عشان هستخدمه في سيستم مثلاً ،،

قبل مندخل فى طريقة كتابة الكيوري ،، لازم تكون عارف انك عشان تجيب الـ StrUserID من جدول ال TB_User فى الداتا بيز SRO_VT_ACCOUNT لازم يكون عندك الـ JID وده الرقم اللي بيدل على الـ UserName بتاعك فى الجيم ،، طيب وعشان تجيب ال JID من جدول _User فى الـ SRO_VT_SHARD بيتجاب بدلالة الـ CharID والـ CharID بيتجاب من _Char عن طريق الـ CharName16 اللى هو أسم الكراكتر ،،

طيب دلوقتي فى طريقتين ،، نشرح الطريقة السهلة وبلاش Inner Join عشان هتبقا فى الأول صعبة عليكوا ،،
وهي انك تستخدم امر Select بس كذا مرة ،،

ملحوظة : عشان تعمل كيوري فى اتنين داتا بيز مختلفتين تعمل Use database1 فى اول الكيوري ،، واي جدول فى الداتا بيز التانية لما تيجي تكتب أسمه بتكتبه زي كدا مثلاً database2.dbo.column_name أو ممكن تختصرها ومتكتبش dbo وهي اختصار لـ Database Object يعني هتكون كدا ،، database2..column_name

طيب نبدأ فى الكيوري ،،

كود PHP:
-- Query 1 Get [StrUserID means (Usernameby JID]
Select StrUserID From [SRO_VT_ACCOUNT].[dbo].[TB_UserWhere JID = ('Query 2 result')
-- 
Query 2 Get [JID by CharID]
Select UserJID From [SRO_VT_SHARD].[dbo].[_UserWhere CharID = ('Query 3 result')
-- 
Query 3 Get [CharID by Target CharName]
Select CharID From [SRO_VT_SHARD].[dbo].[_CharWhere CharName16 = ('CharName')

-- 
Now we will merge all these queries together in one query.
Select StrUserID From [SRO_VT_ACCOUNT].[dbo].[TB_UserWhere JID =
(
Select UserJID From [SRO_VT_SHARD].[dbo].[_UserWhere CharID =
(
Select CharID From [SRO_VT_SHARD].[dbo].[_CharWhere CharName16 'Target CharName'))

-- 
You can use (in,or,and) if u want to select more than 1 variable for example :
Select StrUserID From [SRO_VT_ACCOUNT].[dbo].[TB_UserWhere JID in
(Select UserJID From [SRO_VT_SHARD].[dbo].[_UserWhere CharID in
(Select CharID From [SRO_VT_SHARD].[dbo].[_CharWhere CharName16 Like  'Target CharName' or CharName16 Like 'Target CharName2')) 
يعني نقدر نصيغ الموضوع فى الكلمتين دوول ،،
اكنك بتكلم الـ SQL بتقوله روح اختار اليوسر نيم من جدول TB_User لما يكون الـ JID بيساوي الـ JID من جدول _User لما يكون الـ CharID بيساوي الـ CharID من جدول _Char لما يكون اسم الكراكتر زي اسم الكراكتر اللى انت هتدخله ،، هو بيروح ينفذ الكلام ده على حسب الشروط اللى انت مديهالوا ،،

مثال تاني عاوز اجيب كل الناس اللي الليفل بتاعها 110 مرة واللي اقل من 110 مرة واللي اكبر من 110 مرة واللي اكبر من او يساوي مرة اللي اصغر من او يساوي مرة ،،

نعرف بس الرموز اللي هنستخدمها عشان نبقا عارفين هنمشي ازاي ،،
ملحوظة : الرموز دي مش شغالة إلا على الأرقام فقط مينفعش تشتغل على الـ Text والـصيغ اللي فى الـ SQL هضيفها بعدين اللي هي Data type ،،

يساوي = ،، أكبر من < ،، أصغر من > ،، أكبر من أو يساوي =< أصغر من أو يساوي =>

ندخل فى الأمثلة ،،

--
كود PHP:
Query 1 Select Where Character Level 110
Select 
From [SRO_VT_SHARD].[dbo].[_CharWhere MaxLevel 110
-- Query 2 Select Where Character Level 110
Select 
From [SRO_VT_SHARD].[dbo].[_CharWhere MaxLevel 110
-- Query 2 Select Where Character Level 110
Select 
From [SRO_VT_SHARD].[dbo].[_CharWhere MaxLevel 110
-- Query 2 Select Where Character Level >= 110
Select 
From [SRO_VT_SHARD].[dbo].[_CharWhere MaxLevel >= 110
-- Query 2 Select Where Character Level <= 110
Select 
From [SRO_VT_SHARD].[dbo].[_CharWhere MaxLevel <=  110 
نيجي للـ Inner Join فى الـ Select بس المرحلة دي عاوز شوية تركيز ،،
صيغة الأمر الأول هي

كود PHP:
Select table1_name.column_name table2_name.column_name From  table1_name Inner Join table2_name ON table1_name.column_name =  table2_name.column_name
يستكمل


اقتباس:
المشاركة الأصلية كتبت بواسطة ™Shi6on عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
السلام عليكم ورحمة الله و بركاته

في معلومه بسيطه جداً جداً للشباب الجديده لي بتواجههم في اضافه اسكرول او ايً يكن ..
في اضافه procedure

و هي ان لما بيضيف الProcedure
تحت دي


الامر مش بيتنفذ ..

ف لما تيجي تضيف بروسيدير .. ضيفو فوق الكود لي ف الصوره ..
شكراً


توقيع Hamza FiGo :
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]

عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ] || عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ] || عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]

التعديل الأخير تم بواسطة Dev. iLegend ; 20-08-2015 الساعة 08:48 PM

رد مع اقتباس
إعلانات google