المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : معلومات بسيطة عن عمل Query


Hamza FiGo
19-08-2015, 04:31 PM
بسم الله الرحمن الرحيم

اولا الكلام دا للمبتدئين فقط. ودي كبداية تفهم فية بدايات الــ 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 (http://www.silkroad4arab.com/vb/member.php?&u=94480) (http://www.silkroad4arab.com/vb/member.php?&u=112689)
*****************

توضيح بسيط للناس الجديدة في كتابة الاستعلامات.
الصيغة العامة لجملة 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 (http://www.silkroad4arab.com/vb/member.php?&u=112689)
********************

الجزء التاني من 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

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

-- Query 1 , Get [StrUserID means (Username) by JID]
Select StrUserID From [SRO_VT_ACCOUNT].[dbo].[TB_User] Where JID = ('Query 2 result')
-- Query 2 , Get [JID by CharID]
Select UserJID From [SRO_VT_SHARD].[dbo].[_User] Where CharID = ('Query 3 result')
-- Query 3 , Get [CharID by Target CharName]
Select CharID From [SRO_VT_SHARD].[dbo].[_Char] Where CharName16 = ('CharName')

-- Now we will merge all these queries together in one query.
Select StrUserID From [SRO_VT_ACCOUNT].[dbo].[TB_User] Where JID =
(Select UserJID From [SRO_VT_SHARD].[dbo].[_User] Where CharID =
(Select CharID From [SRO_VT_SHARD].[dbo].[_Char] Where 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_User] Where JID in
(Select UserJID From [SRO_VT_SHARD].[dbo].[_User] Where CharID in
(Select CharID From [SRO_VT_SHARD].[dbo].[_Char] Where 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 ،،

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

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

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

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;يستكمل



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

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

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

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

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

:showoff:

Mahm0ud
19-08-2015, 06:37 PM
عـآآش يـآ وَحش :cloud:
هينفع نـآآس كتير اوى :thumb_yello:

Xan
19-08-2015, 10:39 PM
الله ينور شغل جامد و هيفيد ناس كتييير

youssef13
20-08-2015, 01:22 AM
توضيح بسيط للناس الجديدة في كتابة الاستعلامات.
الصيغة العامة لجملة 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
تم تثبيت الموضوع #

Dev. iLegend
20-08-2015, 02:20 PM
عاش ربنا يقدرنا على شرح كل حاجة انشاء الله ،،

Hamza FiGo
20-08-2015, 03:51 PM
شكرا للاضافة . وان شاء الله يكون موضوع حصري ومفيد للناس كلها :partytime2:

na7la205050
22-08-2015, 05:10 PM
ممنوع الكتابة بالفرانكوا ،، :punk::gun2:

#Gamer
24-08-2015, 01:00 AM
تسلم :) :mf_wink::mf_grenade:

[GM]Viper
24-08-2015, 02:36 AM
تسلم :)

KingStorm
24-08-2015, 05:27 AM
الله يبنور شغل تمام بس انا لو عاوز اتعلم الكلام دة اتعلم لغة اى ؟:mf_trek:

Mando1995
24-08-2015, 05:53 AM
الله ينــور والله شغــل عالــى أوي أستمــرووو متتوقـفـــوش :pile:

Mahmoud Rashwan
25-08-2015, 06:07 AM
موضوع رائع تسلم ايدك بجد

whitechunk
13-09-2015, 10:31 PM
:superman::visit_kr:

!_Ahmed Elabbasy_!
22-09-2015, 06:01 AM
عاش يا رجالة و ابقو لغونى انا كلمتك كذة مرة يا حمزة و مش بترد :) والله ينور شغل عالى اوى

__Phoenix__
24-09-2015, 11:41 PM
طيب لو انا عايز اجيب اسم اتيم معين من الداتا بيز يعني لو عايز اعمل كيوري اغير بيه الماكش ستاك بتاع الارينا مثلا اعملوا ازاي :]

Dev. iLegend
03-10-2015, 04:07 PM
طيب لو انا عايز اجيب اسم اتيم معين من الداتا بيز يعني لو عايز اعمل كيوري اغير بيه الماكش ستاك بتاع الارينا مثلا اعملوا ازاي :]

Use SRO_VT_SHARD
Update _RefObjItem Set MaxStack = 10000 Where ID = (Select Link From _RefObjCommon Where CodeName128 = 'ITEM_ETC_ARENA_COIN')

BLACK X™
16-12-2015, 08:57 PM
مدهش

اسمتر .. انت الافضل
:littleangel:

$King
13-04-2016, 03:54 PM
ما يخشوا عل جوجل ويتعلموا SQL اسهل ! :icon9:

Howdare
03-07-2016, 01:48 AM
طب هو Query SQL بيستخدم انهي لغة برمجة ؟

TheBold
02-12-2016, 12:06 AM
عاااااااااش اوووي :police:

Hamza FiGo
12-12-2016, 10:33 AM
السلام عليكم ورحمة الله و بركاته

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

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

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

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

:showoff:

abomohsen50
26-03-2017, 09:21 PM
والله مع ان ليا فتره ف الموضوع بس بكتشف منك حاجات جديده مكنتش واخد بالي منها ...شكرآآآآآآآآ:mfr_lol::mfr_lol: