ورود

View Full Version : حرفه ای: استفاده از تابع sum در کوئری های تودر تو



majid1605
جمعه 14 شهریور 1393, 00:34 صبح
یک جدول دارم که با استفاده از تابع جمع میخوام نتایج رو وامشی کنم اما به مشکل برخوردم
نتایج بدون تایع sum و join
http://sqlfiddle.com/#!2/39f89a/7 (http://sqlfiddle.com/#%212/39f89a/7)
استفاده از sum
http://sqlfiddle.com/#!2/39f89a/4 (http://sqlfiddle.com/#%212/39f89a/4)

تووی کوئری اول 10تا رکورد فراخوانی میشه ولی وقتی میخوام برای هر یک از این 10تا از جدول number مقادیر رو فراخوانی کنم نتایج اشتباه واکشی میشه ممکنه در جدول numbers برای یک ای دی مقداری وجود نداشته باشه که میخوام فیلد مربوطه 0 بشه یا چندین مقدار وجود داشته باشه که جمعشون رو میخوام

majid1605
شنبه 15 شهریور 1393, 18:11 عصر
به جای join از select استفاده کردم جواب داد و کوئری پیچیده تر شده

http://sqlfiddle.com/#!2/39f89a/32

فقط فیلد s اگه نتیجه ایی وجود نداشته باشه مقدارش null میشه چطور تبدیل به صفرش کنم؟

miladamirzadeh
شنبه 15 شهریور 1393, 22:17 عصر
به جای join از select استفاده کردم جواب داد و کوئری پیچیده تر شده

http://sqlfiddle.com/#!2/39f89a/32

فقط فیلد s اگه نتیجه ایی وجود نداشته باشه مقدارش null میشه چطور تبدیل به صفرش کنم؟
از SELECT CASE استفاده کن.

majid1605
یک شنبه 16 شهریور 1393, 09:51 صبح
واسه جایگزین کردن null چون تصمیم گرفتم از php استفاده کنم کوئری هم بیشتر از این پیچیده نمیشه
ولی در کل چون با ید از چند جدول دیگه به این صورت واکشی کنم این نوع کوئری نوشتن مشکل خاصی نداره چون راه دیگه ایی به نظرم نمیرسه

SELECT id ,name ,(SELECT SUM(value) FROM numbers WHERE numbers.id=id) AS s,
(SELECT SUM(numbers1.value) FROM numbers1 WHERE numbers1.id=id) AS s1,
(SELECT SUM(numbers2.value) FROM numbers2 WHERE numbers2.id=id) AS s1,
.
.
.