PDA

View Full Version : اصلاح کوئری



niknam_mh
شنبه 22 آذر 1393, 18:15 عصر
سلام دوستان
مشکل کوئری زیر چی هست که برای همه گروه ها یه مبلغ رو می زنه:

SELECT idgrohea AS کد, namegroh AS [نام گروه],
(SELECT SUM(dbo.t_moein.bed - dbo.t_moein.bes) AS Expr1
FROM dbo.t_moein INNER JOIN
dbo.t_ashkhas ON dbo.t_moein.idshakhs = dbo.t_ashkhas.idshakhs INNER JOIN
dbo.t_grohea ON dbo.t_ashkhas.idgrohea = dbo.t_grohea.idgrohea
WHERE (dbo.t_moein.tarikh < N'1393/01/01')) AS [حساب قبل]
FROM dbo.t_grohea AS t_grohea_1
GROUP BY idgrohea, namegroh


126552

pezhvakco
شنبه 22 آذر 1393, 18:35 عصر
ساختار جدول ها او نمیدونم ولی
خروجی اون SubQuery شما همیشه یک مقدار است.
یه نگاه داشته باشین :

SELECT SUM(dbo.t_moein.bed - dbo.t_moein.bes) AS Expr1
FROM dbo.t_moein
INNER JOIN
dbo.t_ashkhas
ON dbo.t_moein.idshakhs = dbo.t_ashkhas.idshakhs
INNER JOIN
dbo.t_grohea
ON dbo.t_ashkhas.idgrohea = dbo.t_grohea.idgrohea
WHERE (dbo.t_moein.tarikh < N'1393/01/01')

niknam_mh
شنبه 22 آذر 1393, 19:12 عصر
خب داداش مشکل چیه که یه مقدار بهمون میده برا هر گروه باید متفاوت باشه

مرتضی تقدمی
یک شنبه 23 آذر 1393, 07:36 صبح
سلام
دليل اين مشكل اينه كه در Select داخلي شما هيچ Join ئي با جدول بيروني نزديد. براي رفع مشكل، Select داخلي رو با جدول t_grohea_1 نيز ارتباط بديد.
موفق باشيد

niknam_mh
یک شنبه 23 آذر 1393, 08:00 صبح
سلامدليل اين مشكل اينه كه در Select داخلي شما هيچ Join ئي با جدول بيروني نزديد. براي رفع مشكل، Select داخلي رو با جدول t_grohea_1 نيز ارتباط بديد.موفق باشيدداداش اگه دقت کرده باشید:جدول t_moein با جدول t_ashkhas با کلید idshakhs با همدیگه join هستند و جدول t_ashkhas با t_grohea با کلید idgrohea با همدیگه join هستند ولی نمی دونم مشکل چی هست که درست جواب نمی ده.

مرتضی تقدمی
یک شنبه 23 آذر 1393, 09:43 صبح
داداش اگه دقت کرده باشید:جدول t_moein با جدول t_ashkhas با کلید idshakhs با همدیگه join هستند و جدول t_ashkhas با t_grohea با کلید idgrohea با همدیگه join هستند ولی نمی دونم مشکل چی هست که درست جواب نمی ده.

مهندس شما كاري كه من گفتم رو يه تست بكن مطمئنا نتيجه ميگيري. id جدول t_grohea_1 رو با id در select داخلي ارتباط بده.

محمد آشتیانی
یک شنبه 23 آذر 1393, 17:16 عصر
سلام
به این شکل اگر اصلاح بشه احتمالا درست میشه


SELECT g.idgrohea AS [کد],
g.namegroh AS [گروه],
(SELECT SUM(t.bed - t.bes) FROM t_moein AS t LEFT JOIN t_ashkhas AS a ON t.idashkhs = a.idshakhs WHERE a.idgrohea = g.idgrohea AND t.tarikh < N'1393/01/01') AS [حساب قبل]
FROM t_grohea AS g
GROUP BY g.idgrohea, g.namegroh



موفق باشید

niknam_mh
یک شنبه 23 آذر 1393, 17:26 عصر
سلامبه این شکل اگر اصلاح بشه احتمالا درست میشهSELECT g.idgrohea AS [کد], g.namegroh AS [گروه], (SELECT SUM(t.bed - t.bes) FROM t_moein AS t LEFT JOIN t_ashkhas AS a ON t.idashkhs = a.idshakhs WHERE a.idgrohea = g.idgrohea AND t.tarikh < N'1393/01/01') AS [حساب قبل] FROM t_grohea AS gGROUP BY g.idgrohea, g.namegrohموفق باشیدداداش محمد جواب داد ممنون از لطف شما خدا خیرت بده داداش