PDA

View Full Version : سوال: تشخیص فیلدها در جدول توسط sql



wrangl3r
شنبه 08 آبان 1389, 13:16 عصر
با سلام
من 2 تا table دارم که تو هر کردوم 2 فیلد مشابه داره quantity1,2,code1,2) حالا می خوام وقتی داده ها وارد می شه تفاضل مجموع ورودی های (quantity1 و مجموع خروجی ها(quantity2 را زمانی که code1=code2 را به هم نشون بده.
با تشکر

حمیدرضاصادقیان
شنبه 08 آبان 1389, 13:37 عصر
سلام. شما باید از join استفاده کنید.
مثال :

Select (sum(quantity1)-Sum(quantity2)) as Remainder from Table1
inner join Table2
on code1=code2

wrangl3r
شنبه 08 آبان 1389, 19:01 عصر
مرسی از راهنمایی اما یک مشکل هست برای نمونه


table1
code 1 q1
100 10
200 20

table 2
code2 q2
100 5

در این حالت جوابی که نشون می ده 5 (5-10) هست و 20 نشون نمی ده منظور اینکه یعنی نمیاد خود به خود واسه کد 200 در جدول 2 صفر بزاره.

حمیدرضاصادقیان
شنبه 08 آبان 1389, 23:08 عصر
سلام.خوب برای این مثال شما میتونید از outer join استفاده کنید. به این شکل

select code1,(sum(q1)-sum(isnull(q2,0))) as Remainder,isnull(code2,0) as code2 from table1
Left outer join table2 on table1.code1=tbale2.code2

wrangl3r
یک شنبه 09 آبان 1389, 13:10 عصر
خیلی خیلی ممنون از کمکتون، پس باید دو تا query درست کنم درسته؟

حمیدرضاصادقیان
یک شنبه 09 آبان 1389, 13:24 عصر
سلام.نه نیازی نیست.شما ازهمین کوئری دوم استفاده کنید.
موفق باشید

wrangl3r
یک شنبه 09 آبان 1389, 19:51 عصر
سلام.
خوب نمی شه که چه طوری بیاد مجموع تفاضل 2 تا q حساب کنه وقتی کدی ننوشتیم؟
این کدی که شما نوشتین صفر بر نمی گردونه TRUE FALSE نشون می ده !!!!!

حمیدرضاصادقیان
یک شنبه 09 آبان 1389, 21:51 عصر
سلام.ببخشید من کوئری دوم رو اشتباه نوشتم یعنی جمع اونو ننوشتم الان دوباره تست کنید باید جواب بده.

wrangl3r
دوشنبه 10 آبان 1389, 06:57 صبح
سلام .EROR می ده
in aggregate and grouping expressions the select clause can contain only aggregate and grouping expressions select clause = table1,code1

حمیدرضاصادقیان
دوشنبه 10 آبان 1389, 08:10 صبح
سلام.انتهای همان کوئری دستور زیر را وارد کنید.

group by code1,isnull(code2,0)

wrangl3r
دوشنبه 10 آبان 1389, 19:53 عصر
سلام ، دوست من باز هم اشکال می گیره . می گه کد 2 رو نمی شناسه
ببین من 2 تا جدول دارم که ورود و خروج کالا رو ثبت می کنند، حالا می خوام موجودی هر کالا رو داشته.به نظرت از همین راه باید استفاده کنم ؟؟
و اینکه خواسته باشم هنگام خروج هر کالا به هم موجودی رو نشون بده باید چه کار کنم ؟

حمیدرضاصادقیان
دوشنبه 10 آبان 1389, 22:49 عصر
سلام.من اون کوئری رو با توجه به اسامی که شما گفتید نوشتم.
شما برای اینکه به جواب بر سید ساختار دقیق جداولتو بگو نمونه اطلاعات داخل اونهم بگو. تا بشه دقیقتر کوئری مربوطه رو نوشت.
موفق باشید

wrangl3r
سه شنبه 11 آبان 1389, 20:27 عصر
مرسی ، درست شد ولی همون طور که گفتم به جای صفر TRUE,False بر میگردونه
----------------
جستجو کردم در توابع sql تابع مخصوصش را پبدا کردم "COALESCE " .خیلی ممنون اگر کمک های شما نبود فکر نکنم می تونستم درستش کنم