آموزش طراحی وب

مدرسه مجازی ایرانیان

دسته بندی موضوعات
سفارش تبلیغات

نحوه ی انتخاب آخرین رکورد از جدول دوم

mysql

نحوه ی انتخاب آخرین رکورد از جدول دوم

و انتخاب چند فیلد از جداول مختلف

سلام خدمت همراهان همیشگی مدرسه مجازی ایرانیان

در مقاله ی Union یاد گرفتید که چطور از جداولی که فیلدهای یکسان دارن اطلاعات select کنید، حالا ممکنه بخواین از جداول مختلف که فیلدهای یکسان هم ندارن ، فیلدهای مختلف رو select کنید.

برای مثال :

یک جدول ایجاد کردیم برای دانش آموزان که با فیلدهای نام ، نام خانوادگی ، نام پدر این جدول تشکیل شده (برای پروژه های اصلی کلیه ی اطلاعات دانش آموز گرفته میشه)

student

یک جدول ایجاد کردیم که نام درس ها ذخیره میشه :

2

یک جدول ایجاد کردیم که نمرات هر درس رو وارد می کنیم:

3

اطلاعاتی که در جداول بالا درج شده اطلاعات زیر رو نشون میده :

دانش آموز میترا رحیمی در درس ” انگلیسی ” به ترتیب نمره های ۱۸ ، ۲۰ ، ۱۹ رو کسب کرده .

دانش آموز مینا همتی در درس ” انگلیسی ” به ترتیب نمره های ۱۷ ، ۱۶ ، ۱۹ رو کسب کرده .

دانش آموز مونا رستگار در درس ” انگلیسی ” به ترتیب نمره های ۱۴، ۱۶، ۱۲ رو کسب کرده .

حالا ما میخوایم یک کوئری بزنیم که آخرین نمراتی که دانش آموزان در درس انگلیسی کسب کردند رو دریافت کنیم. چون آخرین نمره رو میخوایم باید تعداد دریافتی رو محدود کنیم و بگیم آخرین رکورد درج شده مربوط به هر دانش آموز رو در جدول numbers بگیر و نمایش بده :

نتیجه :

4

خوب حالا بیاین کوئری رو بررسی کنیم :

همونطور که میبینید بین جدول students و numbers با کلید اصلی  students.id و کلید خارجی numbers.students_id ارتباط بر قرار است. توسط همین ارتباط ما کوئری رو مینویسیم .

select اصلی رو روی جدول students می زنیم . برای اینکه سیستم متوجه بشه ما از کدوم جداول کدوم فیلدهارو انتخاب می کنیم ، ابتدا نام جدول رو مینویسیم و با یک نقطه نام فیلد مورد نظر رو مینویسیم .

فیلد name و  family رو از جدول students انتخاب کردیم ، حالا میخوایم فیلد number رو از جدول numbers دریافت کنیم. همینطوری نمیتونیم number رو انتخاب کنیم باید یکسری شرایط براش تعریف کنیم ، اول اینکه یه inner join استفاده می کنیم تا نمرات هر دانش آموز رو مختص به خودش انتخاب کنه .

تو inner join یه select میزنیم از جدول numbers و فیلدهای مورد نیاز رو انتخاب می کنیم ، و چون آخرین نمره رو میخوایم میگیم بر اساس تاریخ مرتب کن و آخرین نمره ی ثبت شده رو select کن . توی شرط هم میگیم اونایی رو انتخاب کن که مربوط به درس انگلیسی هستند، بعد از select از الیاس استفاده می کنیم و میگیم این select یی که انجام شده به عنوان جدول  num در نظر بگیر. پس از این به بعد باید بجای اشاره به جدول  numbers به جدول  num اشاره کنیم . پس در ادامه اتصال بین دو جدول رو با استفاده از نام num انجام میدیم.

برمیگردیم به خط اول ، میبینید که فیلد  number رو از num انتخاب کردیم.

حالا برای اینکه فقط یک رکورد از هر دانش آموز رو بهمون نمایش بده از  group by استفاده می کنیم. با این دستور میگیم studnets.id های تکراری رو نمایش نده ، فقط آخرین رکورد از نمرات رو برای هر دانش آموز نمایش بده.

اگر از  group by استفاده نمیکردیم تمامی نمرات رو برای هر دانش آموز نمایش میداد ، با  group by گفتیم id های تکراری رو نمایش نده .

خوب دوستان بریم stored procedure این کوئری رو هم بنویسیم:

حتی میتونید این sp رو داینامیک ترش کنید که برای تمامی دروس استفاده بشه ، پس میتونیم id درس رو به عنوان ورودی به کوئری پاس بدیم:

اگر این مطلب آموزشی براتون مفید بوده ، میتونید لینک مطلب رو در شبکه های اجتماعی به اشتراک بگذارید.

موفق و پاینده باشید.

<<

>>

اگر این آموزش برای شما مفید بود با دوستان خود به اشتراک بگذارید



سفارش تبلیغات

گردآوری و تالیف : میترا رحیمی

بنیانگذار و نوسنده در مدرسه مجازی ایرانیان و سردبیر ماهنامه طراحی وب همچنین مدرس و مسلط به برنامه نویسی سمت سرور با PHP MVC و برنامه نویسی سمت کلاینت با html 5 , css3 , jquery , مبانی سئو و سیستم مدیریت محتوای وردپرس

خوراک خوشمزه و علمی روزانه
با وارد کردن ایمیلتون در فیلد روبرو آموزش های جذاب و vip دریافت نمایید

آموزش های مرتبط با این مطلب

دیدگاه های مخاطبین

لطفا تنها دیدگاه خود را در رابطه با این مطلب ارسال نمایید، سوالات را از طریق سامانه پرسش و پاسخ مطرح نمایید. سوالات در دیدگاه ها تایید نخواهد شد.

  • محمد

    سلام
    عالی بود. واقعا جایی این آموزش ها گیر نمیاد
    فقط اگه خواسته باشیم که یه مقدار رو بگیریم و بهش یه مقدار دیگه اضافه کنیم (هر دو عددی باشه) باید چجوری کنیم یعنی باید دو تا دستور بنویسیم ۱.Select
    ۲.Update
    درسته؟ اینجوری یکم سرعت پایین نمیاد.
    خیلی واجبه
    بازم ممنون

    • حسین همت یار

      سلام ، سوالات فقط در بخش پرسش پاسخ جواب داده خواهد شد. تشکر

  • محمد

    سلام داریم یه سایت نسبتا بزرگی رو مینویسم و از سایتتون واقعا ممنونم بخاطر آموزش هاش.
    فقط می خواستم بدونم اینکه ما تو هر صفحه چند بار دیتابیس رو با pdo باز میکنیم و اطلاعات رو برمیداریم درسته آیا؟ یعنی مثلا همون صفحه رو به روز میکنه فقط می خواهم توی هدر تعداد نظرات رو نشون بده حالا این هدر هم توی تمامی صفحات هست آیا همین روش استاندارد هست؟
    خیلی ممنون

    • حسین همت یار

      سلام ، سوالات فقط در بخش پرسش پاسخ جواب داده خواهد شد. تشکر

وبلاگ مدرسه

مختصری درباره ما
مدرسه مجازی ایرانیان در زمینه آموزش علوم و فنون طراحی و برنامه نویسی صفحات وب اعم از آموزش زبان های برنامه نویسی و کدنویسی و همچنین آموزش طراحی گرافیک توسط نرم افزارهای گرافیکی پیکسلی و برداری فعالیت دارد .
ورود به وبلاگ

مدرسین مدرسه

  • حسین همت یار

    حسین همت یار

    مدرس ، طراح رابط کاربری وب و موبایل با 8 سال سابقه ی فعالیت حرفه ای

سوابق کامل

آخرین پرسش و پاسخ ها

آخرین پرسش و پاسخ ها
شما هم سوالی دارید ؟