PDA

View Full Version : سوال: مشکل در ایجاد query



فؤاد
پنج شنبه 10 تیر 1389, 14:32 عصر
سلام
دنبال بهترین و سریعترین کوئری برای مسئله زیر هستم

فرض کنید جداول زیر رو داریم

tbl_users
----------------
id (int)
name (nvarchar)


tbl_log
-----------------
uid (int)
logdate (datetime)


tbl_score
----------------
uid (int)
mode (int)
cost(int)

xــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــx
و میخواهیم گزارشی را با ستون های زیر برای هر کاربر داشته باشیم

نام کاربر
جمع cost هایی که Mode آنها مساوی 1 است
تعداد Cost هایی که Mode آنها مساوی 2 است
تعداد Logdate های کاربر
آخرین Logdate کاربر

xــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــــــــــــــ ــــــــــــx

قبلا از راهنمایی شما ممنونم

محمد سلیم آبادی
پنج شنبه 10 تیر 1389, 19:28 عصر
/*=========================================
--Mohammad Salimabadi SQL Serve Developer--
===========================================*/
SELECT u.name,D1.cnt, D1.mx, D2.[cnt_mode_1], D2.[cnt_mode_2]
FROM tbl_users AS u
INNER JOIN
(
SELECT uid, COUNT(*) AS cnt, MAX(logdate) AS mx
FROM tbl_log
GROUP BY uid
) AS D1
ON D1.uid = u.id
INNER JOIN
(
SELECT uid, SUM(CASE WHEN mode = 1 THEN cost ELSE 0 END) AS [cnt_mode_1],
SUM(CASE WHEN mode = 2 THEN cost ELSE 0 END) AS [cnt_mode_2]
FROM tbl_score
GROUP BY uid
) AS D2
ON D1.uid = D2.uid ;