Mohsen
Mohsen
خواندن ۱ دقیقه·۳ سال پیش

نوشتن کوئریهای تو در تو با MySQL

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

شاید برای اینچنین موقعیتی اولین فکری که به ذهن خطور کنه این باشه که به تعداد نیازی که دارید یک درخواست به سرور بفرستید و از دیتابیستون موارد مورد نیاز رو دریافت کنید.

خوشبختانه زبان ساخت یافته SQL برای این کار راه حل سریعتری به نام SubQuery داره و میشه باهاش با نوشتن یک کوئری واحد، چند نتیجه رو با هم از یک یا چند جدول متفاوت دریافت کرد.

مثلا برای دریافت اطلاعات تصویر بالا که شامل نمایش تعداد پرسنل، تعداد دستگاه، تعداد ابزارآلات و تعداد جرائم هست، به جای نوشتن 4 کوئری جدا جدا، به شکل زیر و با یک کوئری میشه نتیجه دلخواه رو بدست آورد:

SELECT ( SELECT COUNT(*) FROM users) AS users_count,
( SELECT COUNT(*) FROM tools) AS tools_count, ( SELECT COUNT(*) FROM crimes) AS crimes_count, ( SELECT COUNT(*) FROM vehicles) AS vehicles_count

به کوئریها میشه شرط هم اضافه کرد تا نتایجش دقیقتر بشه. مثلا کوئری زیر تعداد رنگهای قرمز، آبی و زرد توی جدول table رو بهمون برمیگردونه:

SELECT( SELECT COUNT(*) FROM table WHERE color = 'YELLOW', SELECT COUNT(*) FROM table WHERE color = 'BLUE', SELECT COUNT(*) FROM table WHERE color = 'RED' );

با ساب‌کوئری کدهای جالب و پیچیده تری رو میشه نوشت که برای درک بهتر و دیدن مثالهای بیشتر میتونید یه سرچ کوچیک در موردشون داشته باشید!

امیدوارم مفید بوده باشه.

nested querymysqlmultiple count sql
یه برنامه نویس وب که شدید علاقه داره به یادگیری بیشتر توی زمینه کاریش و مسائل مرتبط با آی.تی و تکنولوژی :))
شاید از این پست‌ها خوشتان بیاید