نکات برنامه‌نویسی

نکات برنامه‌نویسی و رایانه‌ای - امیرمسعود ایرانی

نکات برنامه‌نویسی

نکات برنامه‌نویسی و رایانه‌ای - امیرمسعود ایرانی

انتخاب یک ردیف از میان هر گروه از ردیف‌ها در MySQL

امیرمسعود ایرانی | چهارشنبه, ۱۶ آبان ۱۳۹۷، ۰۳:۴۴ ق.ظ | ۰ نظر

اگر بخواهیم در جدولی که شامل ردیف‌های متعدد متصل به یک جدول خارجی است، ردیف‌ها را گروه‌بندی کنیم و از هر گروه یک ردیف را با شرطی خاص استخراج کنیم، روش‌های متنوع و با مزایا و معایب مختلفی وجود دارند.

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

یکی از کارآمدترین روش‌ها، استفاده از روش زیر است که در نسخه‌های مختلف MySQL و سایر پایگاه‌های داده به خوبی کار می‌کند.

select p1.* from prices p1
left join prices p2
on( p1.product_id = p2.product_id and p1.created_at < p2.created_at )
where p2.created_at is null

در این روش جدول قیمت‌ها را با استفاده از left join به خودش متصل می‌کنیم. اتصال با این شرط است که ردیف‌ها مربوط به یک محصول باشند و تاریخ ثبت قیمت در جدول اول از تاریخ ثبت قیمت در جدول دوم قدیمی‌تر باشد.

سپس روی نتایج به دست آمده شرط می‌گذاریم که ستون تاریخ در جدول دوم NULL باشد.

به عبارت دیگر، در این روش ابتدا ردیف‌هایی که تاریخ جدول اول از تاریخ جدول دوم قدیمی‌تر است پیدا می‌شوند و اگر تاریخ ثبت شده در جدول اول قدیمی‌تر از هیچ تاریخی در جدول دوم نباشد( مساوی جدیدترین تاریخ باشد ) همان ستون با دستور where فیلتر می‌شود

  • امیرمسعود ایرانی

mysql

sql native client

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی