PDA

View Full Version : جمع، تفریق، ضرب، تقسیم بین چند فلید از چند تیبل



tc1000
دوشنبه 19 فروردین 1387, 01:11 صبح
با سلام
من چندین تیبل دارم که میخوام در به طور مثال فیلد جمع total رو از جدول اول + جمع فیلد price از جدول دوم * جمع فیلد count از جدول سوم بکنم
لطفا یک مثال برای من بزینید ممنون میشم

SYNDROME
دوشنبه 19 فروردین 1387, 07:57 صبح
با سلام
من چندین تیبل دارم که میخوام در به طور مثال فیلد جمع total رو از جدول اول + جمع فیلد price از جدول دوم * جمع فیلد count از جدول سوم بکنم
لطفا یک مثال برای من بزینید ممنون میشم
اگر بین جداول ارتباط بر قرار است و می تواند Join زد.


Select T1.Price-T2.Total As Op
From T1
Inner Join T2
On T1.Code = T2.Code

در غیر این صورت می توانید مقادیر را داخل متغیر بریزید و سپس عملیات فوق را انجام دهید.
موفق باشید

tc1000
دوشنبه 19 فروردین 1387, 08:46 صبح
اگر بین جداول ارتباط بر قرار است و می تواند Join زد.


Select T1.Price-T2.Total As Op
From T1
Inner Join T2
On T1.Code = T2.Code

در غیر این صورت می توانید مقادیر را داخل متغیر بریزید و سپس عملیات فوق را انجام دهید.
موفق باشید
با سلام
منظور از ارتباط داشتن یعنی چه؟

Amir_Safideh
دوشنبه 19 فروردین 1387, 10:27 صبح
Select ((Select Sum(Total) From Table1)+(Select Sum(Price)From Table2)+
(Select Count(*) From Table3))

-------------
موفق باشید.

tc1000
دوشنبه 19 فروردین 1387, 16:38 عصر
با تشکر از کد خوبی که به من دادید کلی کارم رو راه انداخت
یه مطلب دیگه داشتم که گفتم توی هین جا بنویسم
چطور میشه یه if هم گذاشت بین این جمع و تفرق و..... اینا

Amir_Safideh
دوشنبه 19 فروردین 1387, 18:49 عصر
چطور میشه یه if هم گذاشت بین این جمع و تفرق و..... اینا
بله میشه استفاده کرد ولی بهتره بفرمائید این شرط رو برای چه کاری لازم دارید چون مهمه که منظور از استفاده از If چی هست . دستورات دیگه ای هم هست که میشه استفاده کرد مثل Case که باز هم برای پاسخ دقیق اطلاعات دقیق لازمه . اما اگر در بین دستورات مربوط به Select میخواهید شرطی بگذارید در اون صورت از If نمیتونید استفاده کنید در این زمان میتونید از Case استفاده کنید که یه نمونه از کاربردش رو براتون میزارم :

Select ((Select Sum(Case When Total < 100 Then 0 Else Total End)From Table1)+
(Select Sum(Case When Which_Field = 1 Then Price1 When Which_Field = 2
Then Price2 Else Price3 End)From Table2)+ (Select Count(*) From Table3))

--------------
موفق باشید.

tc1000
دوشنبه 19 فروردین 1387, 19:30 عصر
بطور مثال :
میخوام بگم اگر جدول شماره 1 فیلد code مساوی عدد 200 بود این کا رو بکنه و اگه مساوی 300 بود این کار رو بکنه
( منظور از این کار رو بکنه اینه که همون علیات جمع و .... رو انجام بده )

Amir_Safideh
سه شنبه 20 فروردین 1387, 14:48 عصر
( منظور از این کار رو بکنه اینه که همون علیات جمع و .... رو انجام بده )
خوب این کار رو هم میشه کرد . اگر به مثالی که براتون گذاشته بودم دقت کرده باشید متوجه میشید که دستور Case شرطی رو چک میکنه و بر اساس اون مقداری رو که قراره جمع بشه رو برای محاسبات آماده میکنه . اما شما میخواهید که نوع محاسبه رو مشخص کنید که جمع تفریق یا ... باشه . اینکار هم شدنیه ولی منطقی به نظر نمیرسه . این هم یه نمونه کد :

Select
(Case When Table1.Code = 200 Then ((Select Sum(Total)From Table2)+(Select Sum(Price)From Table3)+
(Select Count(*)From Table4))When Table1.Code = 300 Then((Select Sum(Total)From Table2)-
(Select Sum(Price)From Table3)+(Select Count(*)From Table4))Else((Select Sum(Total)From Table2)+
(Select Sum(Price)From Table3)/ (Select Count(*)From Table4))End)
From Table1

در ضمن بهتر بود تا جواب سوالتون رو نگرفتید تاپیک رو حل شده اعلام نمیکردید تا دوستان هم کمکتون کنن .
---------------
موفق باشید .

tc1000
سه شنبه 20 فروردین 1387, 17:10 عصر
با سلام و تشکر
جواب سئوالم رو گرفته بودم
این اضافه بر سازمان بود

tc1000
چهارشنبه 21 فروردین 1387, 16:26 عصر
لطفا این کد

Select
(Case When Table1.Code = 200 Then ((Select Sum(Total)From Table2)+(Select Sum(Price)From Table3)+
(Select Count(*)From Table4))When Table1.Code = 300 Then((Select Sum(Total)From Table2)-
(Select Sum(Price)From Table3)+(Select Count(*)From Table4))Else((Select Sum(Total)From Table2)+
(Select Sum(Price)From Table3)/ (Select Count(*)From Table4))End)
From Table1
این کد رو چطوری توی sp بذارم که غلط از من نگیره