یک سئوال در مورد یک کوئری-1
با سلام و خسته نباشید خدمت شما
من کوئری زیر را اجرا می کنم کوئری زیر این کارو انجام می دهد که sum هر اجناس را می گیرد البته در subquery اینکار را انجام می دهد بعد در select اول min و max کل جمع ها را به ما نشان می دهد حالا سئوال من این هست که من فیلدهای دیگر جدول table_1 را اگر در select اول قرار بدهم به من ارور می دهد و نمی توانم فیلدهای دیگر را نمایش دهم ممنون می شوم کمکم کنید لطف می کنید.
کوئری در زیر هست :
SELECT MAX(AVGSAL) AS Max_1,MIN(AVGSAL) AS Min_1 FROM ( SELECT TABLE_1.ID_JENSE, SUM(price) AS avgsal FROM TABLE_1 GROUP BY TABLE_1.ID_JENSE ) AS A1
و کوئری های زیر مربوط به جدول table_1 می باشد با اطلاعات آن.
/****** Object: Table [dbo].[Table_1] Script Date: 30/11/2017 08:41:29 ب.ظ ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Table_1]( [date1] [datetime] NULL, [id] [int] IDENTITY(1,1) NOT NULL, [jense] [varchar](50) NULL, [id_jense] [int] NULL, [price] [int] NULL, CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[Table_1] ON INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 1, N'berenj', 2, 10000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 2, N'roghan', 1, 20000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-04T00:00:00.000' AS DateTime), 4, N'adams', 3, 40000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-06T00:00:00.000' AS DateTime), 6, N'berenj', 2, 200000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-07T00:00:00.000' AS DateTime), 7, N'adams', 3, 10000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-08T00:00:00.000' AS DateTime), 8, N'roghan', 1, 80000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-09T00:00:00.000' AS DateTime), 9, N'roghan', 1, 90000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 11, N'bastani', 6, 110000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 12, N'bastani', 6, 120000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 14, N'berenj', 2, 130000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 15, N'roghan', 1, 140000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 18, N'adams', 3, 60000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 19, N'zeyton', 4, 160000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 20, N'zeyton', 4, 170000) INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 21, N'zeyton', 4, 750000) SET IDENTITY_INSERT [dbo].[Table_1] OFF
6 پاسخ
با سلام و خسته نباشید
از راهنمایی های شما بسیار ممنونم لطف کردید.
من یک سئوالی در سایت tosinso.com سئوال کردم بی پاسخ مانده است خواستم بدونم می توانید منرا در این مورد راهنمایی کنید :
لینک در زیر هست :
سوال: در مورد تابع .WRITE برای لاگ کمتر در فایل ldf
متشکرم
سلام
این یک کد پیشنهادی است
select tbl2.* , tbl1.* from ( select tbl1.id_jense , sum(tbl1.price) as sumP , min(tbl1.price) as MinP ,max(tbl1.price) as MaxP from Table_1 tbl1 group by tbl1.id_jense ) as tbl1 inner join Table_1 tbl2 on tbl1.id_jense= tbl2.id_jense
با سلام
فکر می کنم منطق کار شما درست نیست
شما داری در یک select هم min و هم max رو انتخاب می کنی، حال اینکه این min و max هر کدوم جداگانه مربوط به یک سطر از جدول هست که id متفاوتی دارند، و نمی تونن اطلاعات اون سطر ها کنار هم قرار بگیرند
لطفا بیشتر توضیح بدید دقیقا میخاهید چکار کنین؟؟
با سلام و خسته نباشید خدمت شما
اگر زحمت نیست و سورس را بگذارید ممنون می شوم لطف می کنید.
سلام و درود
برای این کار شما ابتدا باید تمام ستونهای جدول رو select کنی و سپس با یک select داخلی که در اون Min ,max رو محاسبه می کنی Inner join کنی...
با این کار تمام سطر های جدول و در کنار اون min و max نمایش داده می شه.
امتحان کنین اگر نشد بگید سورسش رو بزارم...
با سلام خدمت شما دوست عزیز
از توجه شما خیلی متشکرم
دقیقا شما درست می فرمایید منظور من این هست می خواهم مثلا جدول 1000 رکورد دارد بیاید فیلدهای دیگر را هم نمایش بدهد اما min و max در جدول تکرار شود یعنی مثلا ما 1000 رکورد داریم بیاید مقدار min و max را در 1000 رکورد تکرار کند اگر به این صورت باشد هم فیلدهای جدول را داریم و هم جواب min و max را داریم.
ممنونم می شوم راهنمایی کنید
با تشکر از شما