ورود

View Full Version : سوال: مشکل در شمردن رکورد ها با استفاده از group by



woeful
جمعه 27 شهریور 1394, 20:00 عصر
سلام
به عنوان مثال اگر ۲ جدول به صورت زیر داشته باشیم :

۱ - branches



NAME
HASH
ID


علمی
1
1


داستانی
2
2


رمان
3
3



۲ - files



BRANCH
ID


2
1


2
2


2
3


1
4


1
5



فرض کنید جدول اول یک سری دسته بندی رو نشون میده با HASH یکتا
جدول دوم هم اطلاعات مربوط به فایل ها رو ذخیره کرده . در جدول دوم یک ستون داریم به نام BRANCH که HASH مربوط به دسته مورد نظر رو داخل خودش داره و نشون میده این فایل داخل کدام دسته بندی قرار می گیره.

کاری که من میخام انجام بدم اینه که در یک کوئری رکورد های جدول branches (جدول اول) رو انتخاب کنم و تعداد فایل هایی که در هر دسته بندی قرار میگیرند رو داشته باشم.

حالا از کوئری زیر برای این کار استفاده میکنم :

select branches.*,count(files.id) as numbers from branches,files where branches.HASH = files.BRANCH group by files.BRANCH order by id desc

نتایج درست بدست میاد اما یک مشکلی که هست رکورد هایی که مقدار count اونها صفر میشه برنمیگرده و حذف میشه ینی به جای اینکه نتایج زیر بدست بیاد :



NUMBERS
NAME
HASH
ID


2
علمی
1
1


3
داستانی
2
2


0
رمان
3
3




این بدست میاد :



NUMBERS
NAME
HASH
ID


2
علمی
1
1


3
داستانی
2
2



من میخام اون رکوردی که تعدادش صفر هست رو هم بدست بیارم
ممنون میشم کمک کنید

Seyyed_H_T
دوشنبه 30 شهریور 1394, 09:20 صبح
فکر کنم شما یک Query مثل این مورد نیاز دارید:



SELECT b.ID, b.Hash, b.Name, COALESCE(dtF.cnt, 0) AS NUMBERS
FROM branches b
LEFT JOIN
(SELECT BRANCH, COUNT(BRANCH) AS cnt
FROM files f
GROUP BY BRANCH) dtF
ON b.Hash = dtf.BRANCH;