50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

استفاده از sum در 2 جدول مختلف

باسلام و احترام

من 2 بانک اطلاعاتی به نامهای B1 و B2 دارم که می خواهم جمع مقادیر فیلد V در بانک B1 و جمع مقادیر فیلد M در بانک B2 را بدست آورم.

وقتی این جمع را به صورت جدا جدا می نویسم مشکلی نیست و مقادیر درست است ولی وقتی این دو بانک را باهم ترکیب می کنیم مقادیر بانک B1 اشتباه می شود

باسلام و احترام
من 2 بانک اطلاعاتی به نامهای B1 و B2 دارم که می خواهم جمع مقادیر فیلد V در بانک B1 و جمع مقادیر فیلد M در بانک B2 را بدست آورم.
وقتی این جمع را به صورت جدا جدا می نویسم مشکلی نیست و مقادیر درست است ولی وقتی این دو بانک را باهم ترکیب می کنیم مقادیر بانک B1 اشتباه می شود ||https://tosinso.com/files/get/c9cb5059-872b-4f9b-9b52-ae5319512656||
نتایج اجرای کدهای بالا
||https://tosinso.com/files/get/999d4f41-07de-46db-91f9-9ae6e27a417d||
اشکال کارم کجاست.
باتشکر

نتایج اجرای کدهای بالا

باسلام و احترام
من 2 بانک اطلاعاتی به نامهای B1 و B2 دارم که می خواهم جمع مقادیر فیلد V در بانک B1 و جمع مقادیر فیلد M در بانک B2 را بدست آورم.
وقتی این جمع را به صورت جدا جدا می نویسم مشکلی نیست و مقادیر درست است ولی وقتی این دو بانک را باهم ترکیب می کنیم مقادیر بانک B1 اشتباه می شود ||https://tosinso.com/files/get/c9cb5059-872b-4f9b-9b52-ae5319512656||
نتایج اجرای کدهای بالا
||https://tosinso.com/files/get/999d4f41-07de-46db-91f9-9ae6e27a417d||
اشکال کارم کجاست.
باتشکر

اشکال کارم کجاست.

باتشکر

پرسیده شده در 1396/07/19 توسط

5 پاسخ

0

دوستان عزیز کسی چیزی به ذهنش نمیرسه؟

پاسخ در 1396/07/25 توسط
0

پاسخ شما کاملا درسته ولی برام سوال شد که چه ترکیبی از مقادیر فیلدها در این کوئری اضافه شده که جمع بالاتر میره؟

B1.ID = 14 باید مشکل رو حل کرده باشه ولی چرا بقیه کدها رو باز جمع می کنه؟

پاسخ در 1396/07/19 توسط
1

سلام، وقت بخیر، مشکل به خاطر بخش where هست که شما B1.Id = B2.Id رو نوشتید که تو کوئری های بالا وجود نداره. در حقیقت شما دو جدول B1 و B2 رو با هم Join کردید که در کوئری های بالا اینکار انجام نشده.

پاسخ در 1396/07/19 توسط
0

باسلام

چون من در واقع می خواهم جمع مقادیر ID=14 محاسبه شود

من اگر کد را هم به صورت زیر تغییر بدهم

select SUM(B1.V) ,SUM(B2.M) from B1, B2 WHERE B1.ID='14' and B2.ID='14' and B1.Vaz=N'True' and B2.Vaz=N'True'

باز هم در محاسبه تغییری ایجاد نمی شود

باسلام
چون من در واقع می خواهم جمع مقادیر ID=14 محاسبه شود

من اگر کد را هم به صورت زیر تغییر بدهم
<vb>
select SUM(B1.V) ,SUM(B2.M) from B1, B2 WHERE B1.ID='14' and B2.ID='14' and B1.Vaz=N'True' and B2.Vaz=N'True'
<vb>
باز هم در محاسبه تغییری ایجاد نمی شود
||https://dba.tosinso.com/files/get/27f58d5b-a755-486c-b0d5-7aaa6e58ee99||
واگر کد را نیز به صورت گروهی تغییر بدهم
<vb>
select B1.ID ,SUM(B1.V) ,SUM(B2.M) from B1, B2 WHERE B1.ID=B2.ID and B1.Vaz=N'True' and B2.Vaz=N'True' group by B1.ID
<vb>
بازهم محاسبه اشتباه می باشد.(نوع داده ی V و M از نوع bigint میباشد)
علت چیست دوستان

واگر کد را نیز به صورت گروهی تغییر بدهم

select B1.ID ,SUM(B1.V) ,SUM(B2.M) from B1, B2 WHERE B1.ID=B2.ID and B1.Vaz=N'True' and B2.Vaz=N'True' group by B1.ID

بازهم محاسبه اشتباه می باشد.(نوع داده ی V و M از نوع bigint میباشد)

علت چیست دوستان

پاسخ در 1396/07/20 توسط
0

با سلام و احترام

با توجه به توضیحات ارایه شده بنظر میرسد فیلد ID در هردو جدول Primary Key نیستند. برای راهنمایی بهتر اطلاعات دقیق تری از ساختار جداول نیز مورد نیاز است. اما کد زیر می تواند مشکل شمارا مرتفع نماید:

select sum (t.a) from (select SUM(B1.V) a from  B1 WHERE  B1.ID='14' and  B1.Vaz=N'True'
union all
SELECT SUM(B2.M) a from  B2 WHERE  B2.ID='14' and  B2.Vaz=N'True'
) as t
پاسخ در 1396/07/25 توسط

پاسخ شما