ورود

View Full Version : راهنمایی در مورد یک کوئری



mosi64
دوشنبه 09 خرداد 1390, 13:28 عصر
من یک جدول دارم شامل فیلدهای زیر:
ID,Name,ParentID
که یک کلید خارجی به نام ParentID داره که به کلید اصلی همین جدول متصله
طبیعتا این کلید خارجی برای بعضی رکورد ها null هست یعنی بعضی رکوردها پدری ندارند
حالا من میخوام یک کوئری بنویسم که نام تمام رکورد های جدول و نام پدر هاشون(وبرای اونهایی که parentIDشون null هست مقدار ثابت'no parent')رو برگردونه


این select فقط اونهایی رو که پدر دارند برمیگردونه اونهایی که parentid شون null هست رو نمیاره
select table1.name , t1.name as parent from table1 inner join table1 as t1 on table1.ParentID=t1.ID
ممنون از دوستان

Galawij
دوشنبه 09 خرداد 1390, 13:40 عصر
خوب خیلی ساده است:
کافی در انتهای دستورتون یک and بنویسید:
select table1.name , t1.name as parent from table1 inner join table1 as t1 on table1.ParentID=t1.ID and is null table1.ParentID

mosi64
دوشنبه 09 خرداد 1390, 14:35 عصر
خوب خیلی ساده است:
کافی در انتهای دستورتون یک and بنویسید:
select table1.name , t1.name as parent from table1 inner join table1 as t1 on table1.ParentID=t1.ID and is null table1.ParentID

نه دوست عزیز این جواب نمیده اولا که is null باید بعد از اسم ستون باشه ثانیا نتیجه and این دو عبارت تهی هست یعنی select هیچی بر نمیگردونه چون ParentId یا null هست یا مقدار داره اگه مقدار داشته باشه قسمت دوم نادرست میشه اگه نداشته باشه قسمت اول پس همیشه یکی از دو قسمت نادرست و حاصل ANd یک عبرت نادرست با هرچیزی نادرست پس این کوئری هیچ جوابی نداره
ممنونم

mosi64
دوشنبه 09 خرداد 1390, 14:59 عصر
راه حلش رو خودم پیدا کردم استفاده از union هست
به این شکل
select table1.name , t1.name as parent from table1 inner join table1 as t1 on table1.ParentID=t1.ID
union
select * from table1 where ParentID is null

Galawij
سه شنبه 10 خرداد 1390, 07:52 صبح
سلام
ببخشید یک کم با عجله جواب دادم فرصت نکردم رو جوابم فکر کنم البته برای مقدار null هم می تونید بنویسید:

select 'No Parent' From table1 Where ParentID Is Null