الموقع العربي الاول للعبة Silkroad Online

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=289)
-   -   معلومات بسيطة عن عمل Query (https://silkroad4arab.com/vb/showthread.php?t=590771)

Hamza FiGo 19-08-2015 04:31 PM

معلومات بسيطة عن عمل Query
 
بسم الله الرحمن الرحيم

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

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

http://s26.postimg.org/uwoujugt5/image.jpg

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

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

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

http://s26.postimg.org/w2o94wfq1/image.jpg

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

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

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

http://s26.postimg.org/wj9grc3h5/image.jpg

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

SELECT * FROM

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

http://s26.postimg.org/dodq0x3fd/image.jpg

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

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

http://s26.postimg.org/45417gfx5/image.jpg

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

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

http://s26.postimg.org/tvolupztl/image.jpg

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

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

http://s26.postimg.org/59y3cu2e1/image.jpg

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

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

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

http://s26.postimg.org/4zv678d5l/image.jpg

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

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

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

http://s26.postimg.org/kjxyk0xw9/image.jpg

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

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

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

تمت اضافة المزيد من
الاستاذ youssef13

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

توضيح بسيط للناس الجديدة في كتابة الاستعلامات.
الصيغة العامة لجملة 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 ولا الارقام اللى انا حاططها :)


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


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

والاستاذ Dev. iLegend
********************

الجزء التاني من 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 (المشاركة 5288680)
السلام عليكم ورحمة الله و بركاته

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

و هي ان لما بيضيف الProcedure
تحت دي
http://www3.0zz0.com/2016/12/11/18/573706080.png

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

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

:showoff:

Mahm0ud 19-08-2015 06:37 PM

رد: معلومات بسيطة عن عمل Query
 
عـآآش يـآ وَحش :cloud:
هينفع نـآآس كتير اوى :thumb_yello:


Xan 19-08-2015 10:39 PM

رد: معلومات بسيطة عن عمل Query
 
الله ينور شغل جامد و هيفيد ناس كتييير

youssef13 20-08-2015 01:22 AM

رد: معلومات بسيطة عن عمل Query
 
توضيح بسيط للناس الجديدة في كتابة الاستعلامات.
الصيغة العامة لجملة 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 ولا الارقام اللى انا حاططها :)


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

youssef13 20-08-2015 01:27 AM

رد: معلومات بسيطة عن عمل Query
 
تم تثبيت الموضوع #

Dev. iLegend 20-08-2015 02:20 PM

رد: معلومات بسيطة عن عمل Query
 
عاش ربنا يقدرنا على شرح كل حاجة انشاء الله ،،

Hamza FiGo 20-08-2015 03:51 PM

رد: معلومات بسيطة عن عمل Query
 
شكرا للاضافة . وان شاء الله يكون موضوع حصري ومفيد للناس كلها :partytime2:

#Gamer 24-08-2015 01:00 AM

رد: معلومات بسيطة عن عمل Query
 
تسلم :) :mf_wink::mf_grenade:

[GM]Viper 24-08-2015 02:36 AM

رد: معلومات بسيطة عن عمل Query
 
تسلم :)

KingStorm 24-08-2015 05:27 AM

رد: معلومات بسيطة عن عمل Query
 
الله يبنور شغل تمام بس انا لو عاوز اتعلم الكلام دة اتعلم لغة اى ؟:mf_trek:

Mando1995 24-08-2015 05:53 AM

رد: معلومات بسيطة عن عمل Query
 
الله ينــور والله شغــل عالــى أوي أستمــرووو متتوقـفـــوش :pile:

Mahmoud Rashwan 25-08-2015 06:07 AM

رد: معلومات بسيطة عن عمل Query
 
موضوع رائع تسلم ايدك بجد

whitechunk 13-09-2015 10:31 PM

رد: معلومات بسيطة عن عمل Query
 
:superman::visit_kr:

!_Ahmed Elabbasy_! 22-09-2015 06:01 AM

رد: معلومات بسيطة عن عمل Query
 
عاش يا رجالة و ابقو لغونى انا كلمتك كذة مرة يا حمزة و مش بترد :) والله ينور شغل عالى اوى

__Phoenix__ 24-09-2015 11:41 PM

رد: معلومات بسيطة عن عمل Query
 
طيب لو انا عايز اجيب اسم اتيم معين من الداتا بيز يعني لو عايز اعمل كيوري اغير بيه الماكش ستاك بتاع الارينا مثلا اعملوا ازاي :]


الساعة الآن 07:16 PM.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.