PDA

View Full Version : تفریق حاصلجمع دو جدول



mohsen200162
چهارشنبه 10 تیر 1394, 23:17 عصر
سلام
ممن دو جدول دارم مثلا یکی فاکتور ها و دیگری دریافتی پول ها است
حالا می خوام حاصل جمع فیلد Amount از جدول فاکتور ها رو از حاصل جمع فبلد Amount از جدول دریافتی ها کم کنم
چطور می شه با sql این کار رو انجام داد
من برای حاصل جمع هاش کد نوشتم ولی نمی دونم چطور باید از هم کمشون کرد
این برای فاکتور ها



SELECT SUM(Amount) AS [جمع کل خرج کرد] FROM [Factor] WHERE (([IdProjec] =


این هم برای دریافتی ها


SELECT SUM(Amount) AS [جمع کل خرج کرد] FROM [Received] WHERE

pbm_soy
پنج شنبه 11 تیر 1394, 02:15 صبح
دو دستور select فوق را در یک select دیگر اضافه میکنید درواقع به عنوان جداول منبع جلوی from مینویسیدبصورت زیر

select jam1-jam2 as jam3 from (select1) as t1,(select2) as t2
فقط توجه داشته باشید که در select1 و select2 بجای عبارت جمع کل خرج کرد نام jam1 و jam2 را قید کنید و یا اگر اینکار نکنید در ابتدا برای تفریق کردن باید بصورت t1.[جمع کل کار کرد] باید بنویسید چون هردو جمع یک نام دارند قبل از نام آنها نا جدول یا select مربوط به آنرا باید قید کنید که من در مثال بالا برای هرکدام از select ها یک نام مشخص کنید (بهتر است نامهای مستعار را فارسی نگیرید چون معمولا دچار مشکل میشوید اگر نیاز به فارسی کردن فیلدها در زمان نمایش نتیجه دارید اینکار را توسط کد نویسی در سطح فرم یا گزارشات انجام دهید)
دستور نهائی


select t1.[جمع کل خرج کرد] - t2.[جمع کل خرج کرد] as jam3 from
(SELECT SUM(Amount) AS [جمع کل خرج کرد] FROM [Factor] WHERE (([IdProjec] =.... ) as t1,
(SELECT SUM(Amount) AS [جمع کل خرج کرد] FROM [Received] WHERE ...) as t2


و یا


select jam1 - jam2 as jam3 from
(SELECT SUM(Amount) AS [jam1] FROM [Factor] WHERE (([IdProjec] =.... ) as t1,
(SELECT SUM(Amount) AS [jam2] FROM [Received] WHERE ...) as t2

SabaSabouhi
پنج شنبه 11 تیر 1394, 08:45 صبح
سلام
ممن دو جدول دارم مثلا یکی فاکتور ها و دیگری دریافتی پول ها است
حالا می خوام حاصل جمع فیلد Amount از جدول فاکتور ها رو از حاصل جمع فبلد Amount از جدول دریافتی ها کم کنم
چطور می شه با sql این کار رو انجام داد
من برای حاصل جمع هاش کد نوشتم ولی نمی دونم چطور باید از هم کمشون کرد
این برای فاکتور ها



SELECT SUM(Amount) AS [جمع کل خرج کرد] FROM [Factor] WHERE (([IdProjec] =


این هم برای دریافتی ها


SELECT SUM(Amount) AS [جمع کل خرج کرد] FROM [Received] WHERE



سلام
حاصل هر Select می‌تونه یه جدول باشه یا یک عدد ( یک جدول یک در یک )
پس اگه یه Select بنویسیم که دو مقدار قبلی رو ( حاصل دو select شما رو ) از هم کم کنه جواب حاصل می‌شه


SELECT ( select sum( Amount ) from Invoices where <condition> ) - ( select sum( Amount ) from received where <condition> )

به همین راحتی

صبا صبوحی

pbm_soy
جمعه 12 تیر 1394, 03:16 صبح
بله شما درست میفرمائید در تائید این مورد آقای دکتر رانکوهی در کتاب پایگاه داده هاش چاپ اول یا دومش (شاید در نسخه های دیگر نباشد) از قول آقای سی جی دیت نوشته
یک دستور select را در جواب یک مسئله میتوان به 16 حالت متفاوت نوشت (عدد دقیقش هم خاطرم نیست ولی عددی بالای 14 تا بود!)