PDA

View Full Version : مبتدی: Group By



ahmadreza.rstm
سه شنبه 21 اردیبهشت 1389, 17:14 عصر
سلام دوستان توضيحات در مورد دستور Group By و Having مي خواستم بهم بدين. چه استفاده اي از اين دستور ميشه ؟ چه مواقع استفاده مي شه ؟ لطفا راهنمايي كنيد

arshad89
سه شنبه 21 اردیبهشت 1389, 20:24 عصر
سلام
از group by وقتی استفاده می کنی که می خواهی اطلاعاتت را بر طبق یک یا چند فیلد دسته بندی کنی.
زمانی که میخواهی توابع محاسباتی را در بخش where بیاوری،sql چنین اجازه ای نمی دهد. شرط مربوطه را در قسمت having می آوری.

**وقتی میخواهی having در دستورت بیاوری حتما باید از Group By در دستور sql استفاده کنی.

** هر فیلدی که در قسمت select می آوری در قسمت Group By هم باید آورده شود.

یه جستجو تو سایت بزنی مطالب کاملتری میتونی پیدا کنی.

محمد سلیم آبادی
سه شنبه 21 اردیبهشت 1389, 20:40 عصر
سلام
از group by وقتی استفاده می کنی که می خواهی اطلاعاتت را بر طبق یک یا چند فیلد دسته بندی کنی.
زمانی که میخواهی توابع محاسباتی را در بخش where بیاوری،sql چنین اجازه ای نمی دهد. شرط مربوطه را در قسمت having می آوری.

**وقتی میخواهی having در دستورت بیاوری حتما باید از Group By در دستور sql استفاده کنی.

** هر فیلدی که در قسمت select می آوری در قسمت Group By هم باید آورده شود.

یه جستجو تو سایت بزنی مطالب کاملتری میتونی پیدا کنی.




سلام دوست من،
در مورد خطی که با رنگ صورتی در آورده شده: هیچ الزام و ضروریتی وجود نداره، شما می تونید بدون استفاده از ماده ی group by از having بهره مند شوید. بطور مثال:


SELECT MAX(i) FROM table_name
HAVING MAC(i) >100

در مورد خط نارنجی: اگر آن فیلد در یک تابع تجمعی استفاده شود، می توانیم آن را در Group By در نظر نگیریم.

ahmadreza.rstm
چهارشنبه 22 اردیبهشت 1389, 10:01 صبح
ممنونم از دوستان عزيز به خاطر راهنمايي هاشون

arshad89
چهارشنبه 22 اردیبهشت 1389, 16:27 عصر
سلام دوست من،
در مورد خطی که با رنگ صورتی در آورده شده: هیچ الزام و ضروریتی وجود نداره، شما می تونید بدون استفاده از ماده ی group by از having بهره مند شوید. بطور مثال:


SELECT MAX(i) FROM table_name
HAVING MAC(i) >100

در مورد خط نارنجی: اگر آن فیلد در یک تابع تجمعی استفاده شود، می توانیم آن را در Group By در نظر نگیریم.

ممنون از لطفتون.خط نادنجی رو می دونستم ولی خط صورتی رو نمیدونستم.بازم ممنون:لبخندساده:

green_pm
یک شنبه 26 اردیبهشت 1389, 10:57 صبح
هر فیلدی که در قسمت select می آوری در قسمت Group By هم باید آورده شود.

اگر آن فیلد در یک تابع تجمعی استفاده شود، می توانیم آن را در Group By در نظر نگیریم.

با توجه به این گفته،یه سوالی برای من پیش اومد:
اگر ما مجبور باشیم در اطلاعاتی که قراره برگدانده شود از تعداد زیادی فیلذد در Select استفاده کنیم،
و اگر کوئری ما دارای دستور Group By هم باشد ،آن وقت مجبوریم ،تمام آن فیلدهای select را در دستور group by هم بیاوریم.
آیا این کار در جواب مسئله تغییری ایجاد نمی کند؟ممکنه جواب را به نحو نادرستی تغییر بده؟؟؟؟؟؟؟؟

محمد سلیم آبادی
یک شنبه 26 اردیبهشت 1389, 11:35 صبح
این مساله بر می گردد به سناریوی موجود.
group by برای خلاصه سازی اطلاعات استفاده میشه. عموما یکسری ستون ها را به عنوان مجموعه ی گروه بندی در نظر می گیریم و دیگر ستون ها را داخل توابع تجمعی استفاده می کنیم.

pezhvakco
یک شنبه 26 اردیبهشت 1389, 11:37 صبح
درود :
دستور Group by برای شرایط خاصی استفاده میشه که کاربر می خواد نمایش گروهی داشته باشه .
مثلا می خواد خریداران یک فروشگاه رو بنا کالای خریداری نمایش بده و یا نمایش هایی در همین شرایط .


اگر ما مجبور باشیم در اطلاعاتی که قراره برگدانده شود از تعداد زیادی فیلذد در Select استفاده کنیم،
آیا این کار در جواب مسئله تغییری ایجاد نمی کند
تعداد ستون های مورد استفاده تاثیری در کار ندارد اگر کار درست انجام بشه .

فکر خوش .

green_pm
یک شنبه 26 اردیبهشت 1389, 12:06 عصر
ممنون از توجهتون
ولی من دقیقا متوجه نشدم

pezhvakco
یک شنبه 26 اردیبهشت 1389, 12:24 عصر
ولی من دقیقا متوجه نشدم

اگه کاره تون رو دقیق بگین بهتره و کجا رو متوجه نشدین .

فکر خوش .

hamid_massaelly
پنج شنبه 30 اردیبهشت 1389, 09:17 صبح
حرف شما درسته مجبورید به تعداد فیلدهایتون در Group by هم تکرار کنید منظور دوستان هم اینه که این دستور اصلا طراحی شده برای قالب Query کوتاه تا تعداد ستون بازگشتی را کم کنه.