PDA

View Full Version : سوال: گروهبندی در sql



sarapepors
شنبه 06 فروردین 1390, 09:50 صبح
سلام دوستان من اولین با هست که میخام از گروهبندی در کوئری استفاده کنم کوئری رو هم به نظر خودم درست مینویسم اما با یه خطا مواجه میشم کد مربوط به کوئری و همچنین پیغهام خطا رو مینویسم اگه میشه راهنماییم کنید.
[CODE]
"select tblTurn.Turn,tblDriver.DriverCode,tblDriver.State, tblDriver.FirstName,tblDriver.LastName" +
" from tblTurn,tblDriver"+
" where tblTurn.Driver=tblDriver.DriverCode group by tblDriver.State order by tblTurn.Turn "

[CODE]
دقیقا کد برنامه خودمه بدون گروهبندی هیچ مشکلی نداره و اجرا میشه منتها با گروهبندی این پیغام و میده:
Column 'tblTurn.Turn' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
برا همه کالمنها این خطا رو میده یعنی اولی و که بر دارم برا دومی هم همین و میگه
کمک :متعجب:.
مرسی

shadi khanum
شنبه 06 فروردین 1390, 11:38 صبح
گروهبندی ایراد داره، یعنی منطقی نیست واسه همین Error میده. هدفتون از گروهبندی اینجا چی بوده؟ آخه گروهبندی وقتی انجام میشه که مثلا بخواین مجموع یا میانگین یا تعداد یه چیزی رو به ازای یه فیلد دیگه بگیرین که گروهبندی میکنن ولی شما اینجا چنین چیزی ندارین!

sarapepors
شنبه 06 فروردین 1390, 14:32 عصر
گروهبندی ایراد داره، یعنی منطقی نیست واسه همین Error میده. هدفتون از گروهبندی اینجا چی بوده؟ آخه گروهبندی وقتی انجام میشه که مثلا بخواین مجموع یا میانگین یا تعداد یه چیزی رو به ازای یه فیلد دیگه بگیرین که گروهبندی میکنن ولی شما اینجا چنین چیزی ندارین!

سلام دوستم من دو تا حالت برا درایور در نظر گرفتم حاضر و غایب میخام گروهبندی رو با state یعنی همون دو حالت حاضر و غایب انجام بدم مثلا حاضر ها پشت سر هم غایبها هم به همین ترتیب میخام این طوری گروهبندی بشه راستش هر جا هم که کوئری گروهبندی دیدم همین طور بوده که شما میگین

afrough.arian
شنبه 06 فروردین 1390, 15:42 عصر
sarapepors (http://barnamenevis.org/member.php?163142-sarapepors) جان

به نظر نوشتن این کد مشکل دارد (چک کردم که می گم)
اول شما به جای where دیگه باید از INNER JOIN استفاده کنی (استاد این دستورات برای راحتی و خوانایی و سرعت بخشیدن استفاده می شود)
دوم گروهبندی شما مشکل دارد مثلاً شما می گی تومان مال کشور ایران است ولی در واقع نیست
سوم با حرف هایی که زدی باید minus کنی 2 دستور را به 2 دلیل
1- مجموع تعداد حاضرین
2- اسامی غایبین

shadi khanum
شنبه 06 فروردین 1390, 15:54 عصر
دوست عزیز چیزی که شما میخواین گروه بندی نیست و دستور order by میخواد. به نظر من query رو باید اینجوری مینوشتین تا به چیزی که میخواین برسین
SELECT tblTurn.Turn,tblDriver.DriverCode,tblDriver.State, tblDriver.FirstName,tblDriver.LastName
FROM tblTurn INNER JOIN tblDriver
ON tblTurn.Driver = tblDriver.DriverCode
ORDER BY tblDriver.State , tblTurn.Turn

sarapepors
شنبه 06 فروردین 1390, 17:25 عصر
دوست عزیز چیزی که شما میخواین گروه بندی نیست و دستور order by میخواد. به نظر من query رو باید اینجوری مینوشتین تا به چیزی که میخواین برسین
SELECT tblTurn.Turn,tblDriver.DriverCode,tblDriver.State, tblDriver.FirstName,tblDriver.LastName
FROM tblTurn INNER JOIN tblDriver
ON tblTurn.Driver = tblDriver.DriverCode
ORDER BY tblDriver.State , tblTurn.Turn
بله درسته خودم هم به این نتیجه رسیدم که با orde by کارم راه میفته از این که کمک کردین سپاسگزارم.

sarapepors
شنبه 06 فروردین 1390, 17:27 عصر
sarapepors (http://barnamenevis.org/member.php?163142-sarapepors) جان

به نظر نوشتن این کد مشکل دارد (چک کردم که می گم)
اول شما به جای where دیگه باید از INNER JOIN استفاده کنی (استاد این دستورات برای راحتی و خوانایی و سرعت بخشیدن استفاده می شود)
دوم گروهبندی شما مشکل دارد مثلاً شما می گی تومان مال کشور ایران است ولی در واقع نیست
سوم با حرف هایی که زدی باید minus کنی 2 دستور را به 2 دلیل
1- مجموع تعداد حاضرین
2- اسامی غایبین


این کد مشکل داره ولی مشکلش تو نوشتن where نیست من همه کوئری ها رو به این شکل مینویسم .مرسی از راهنمایی