PDA

View Full Version : یافتن تعداد تکرار یک ستون در ستون دیگر



mah1365
سه شنبه 29 مهر 1393, 17:39 عصر
سلام
من یه جدول دارم برای مجموعه ها و زیر مجموعه های اونها که دارای فیلد های زیر هست:


SectionID, SectionName,State, Descryption, ParentID

SectionID کلید اصلی مجموعه است که از یک شروع می شه و ParentID در واقع ID پدر این مجموعه هست که برای مجموعه های اصلی (پدر) مقدار 0 داره.

من می خوام یک کوئری داشته باشم که جدولی شامل مشخصات مجموعه های اصلی (پدر) رو برام بیاره به اضافه یک ستون شامل تعداد زیر مجموعه های مجموعه اصلی. لطفا کمکم کنید.

micro24
سه شنبه 29 مهر 1393, 20:37 عصر
دستورjoin را مطالعه کنید

mah1365
سه شنبه 29 مهر 1393, 22:08 عصر
دستورjoin را مطالعه کنید
من کوئری رو به شکل زیر نوشتم:
select t1.SectionName, count(t1.SectionID) as setNO
from Sections as t1 inner join Sections as t2
on t2.ParentID = t1.SectionID
group by t1.SectionName
ولی مشکلی که داره اینه که بخش هایی رو که هیچ زیر مجموعه ای ندارند [و باید عدد 0 براشون بیاره] توی خروجی لیست نمی کنه!
لطفاً بیشتر کمک کنید.

ham3d1988
چهارشنبه 30 مهر 1393, 12:10 عصر
سلام نیاز به join ندارید ساب کوئری بنویسید


select
s1.SectionName
,(select count(*) from Sections s2 where s2.ParentID=s1.SectionID ) as SetNo


from Sections S1


where s1.ParentID=0

mah1365
چهارشنبه 30 مهر 1393, 15:44 عصر
خیلی ممنون از پاسخ خوب تون، کاملاً درسته.

یه سؤال دیگه: توی همین جدول فیلد state دو مقداری هست و از نوع bit انتخاب شده. اگه بخوام سه یا چهار مقداری باشه، از چه نوع داده ای استفاده کنم تا بهینه باشه؟ آیا نوع داده ای با دو بیت داریم که برای این حالت مناسب باشه؟

mah1365
پنج شنبه 01 آبان 1393, 15:17 عصر
هیچ کس به سؤال من جواب نمیده؟!:ناراحت:

دیگه دارم به این نتیجه می رسم که از tinyint استفاده کنم و البته این نوع با داشتن 8 بیت (1 بایت) بیشتر از اون مقداری هست که من می خوام ولی ظاهراً چاره ای نیست!