PDA

View Full Version : سوال: مشكل در group by



Iran58
شنبه 16 مرداد 1389, 07:57 صبح
سلام
من كد زير را نوشته ام ودر ست عمل مي كند

alter proc Rang_tbl1
as
begin
select Rang ,COUNT(Rang)
from tbl1
group by Rang
endمشكل من اين است كهRangكليد خارج است وهنگاميكه مي خواهم jionكنم
باكد زير به پيام خطا زير برمي خورم

alter proc Rang_tbl1
as
begin
select tbl1.Id,tblRang.Name ,COUNT(Rang)
from tbl1
join tblRang on tbl1.Rang = tblRang.Id
group by Rang
end
Msg 8120, Level 16, State 1, Procedure Rang_tbl1, Line 4
Column 'tbl1.Id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

pezhvakco
شنبه 16 مرداد 1389, 08:10 صبح
درود :

Column 'tbl1.Id' is invalid in the select list
اون خطایی که میده به خاطر اینه که شما شرایط دستور GROUP BY رو رعایت نکردین (آمدن نام تمام ستون هایه غیر تابعی در GROUP BY ).

این ستون Rang از کدام جدوله ؟

فکر خوش.

Rocker
شنبه 16 مرداد 1389, 08:14 صبح
دستور GROUP BY رو به اینطوری بنویس اگه حل شد بگو

group by Rang,tbl1.Id

MOJTABAATEFEH
شنبه 16 مرداد 1389, 18:54 عصر
دوست عزیز کلیه فیلدهایی که در دستور هستند باید در Group by هم باشند در ضمن بایستی مشخص کنید Rang مربوط به کدام جدول است


موفق باشید

Rocker
شنبه 16 مرداد 1389, 20:00 عصر
دوست عزیز کلیه فیلدهایی که در دستور هستند باید در Group by هم باشند در ضمن بایستی مشخص کنید Rang مربوط به کدام جدول است


موفق باشید



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

Iran58
دوشنبه 18 مرداد 1389, 11:15 صبح
دستور GROUP BY رو به اینطوری بنویس اگه حل شد بگو

group by Rang,tbl1.Id
سلام
مشكل همچنان پابرجاست
چكاركنم