View Full Version : سوال: انتخاب از جدول دسته بندی با فیلد های id و parent_id
bluedream
دوشنبه 19 آبان 1393, 23:34 عصر
سلام..
یک جدول دسته بندی دارم که id و parent_id داره، داخل فرم افزودن محصول قراره از بین دسته بندی انجام شده یک مورد انتخاب بشه..
چه جوری اطلاعات رو از بانک بخونم و بیارم که فقط child ها نمایش داده بشه ؟
مثلا: id= 100, parent_id=0 نرم افزار
id= 200, parent_id=0 سخت افزار
id= 101, parent_id=100 ویندوز
id= 201, parent_id=200 هارددیسک می خوام داخل منو فقط ویندوز و هارددیسک بیاد و از بین این دو انتخاب انجام بشه..
لطفا راهنمایی کنید.. ممنون
bluedream
سه شنبه 20 آبان 1393, 11:39 صبح
کسی نیست راهنمایی کنه؟! :(
captain_hamid
سه شنبه 20 آبان 1393, 11:42 صبح
تو کوئری قسمت شرط اینو بگذارید
where parent_id <> 0
bluedream
سه شنبه 20 آبان 1393, 11:47 صبح
آخه عمق جدول بیشتر از این حرفاست.. خیلی از parent_id ها مقدارشون صفر نیست..
captain_hamid
سه شنبه 20 آبان 1393, 11:49 صبح
چند سطحی؟
یعنی یک فیلد که یک بچه داره باز بچه هم میتونه بچه داشته باشه؟
منظورتون از عمق همین چند سطحی بودنشونه؟
Parent_id
Name
Id
0
نرم افزار
100
0
سخت افزار
200
100
ویندوز
101
200
هارددیسک
201
201
هارد sata
202
شما الان این جدول رو دارین. الان سطری مثل سطر با id 202 دارین؟ که خودش بچه، بچه یکی دیگس؟
bluedream
سه شنبه 20 آبان 1393, 12:13 عصر
این فقط یک مثال بود.. بله دقیقا شما در نظر بگیرین که یک child داریم که parent_id برابر با 202 داره!
bagherok
سه شنبه 20 آبان 1393, 17:27 عصر
آخه عمق جدول بیشتر از این حرفاست.. خیلی از parent_id ها مقدارشون صفر نیست..
خوب تا چه عمقی رو!!!
این فقط یک مثال بود.. بله دقیقا شما در نظر بگیرین که یک child داریم که parent_id برابر با 202 داره!
با مثال که نمیشه جواب داد!!!
جدول ورودی و خروجی رو مثل بالا ترسیم کنید تا بهتر بشه راهنمایی کرد
یا دقیق تر توضیح بدید.
bluedream
سه شنبه 20 آبان 1393, 19:27 عصر
id
name
Parent_id
100
وسایل دیجیتالی
0
200
کتاب و رسانه
0
101
موبایل
100
102
تبلت
100
103
لپ تاپ
100
201
کتاب
200
202
فیلم
200
20101
شعر و ادبیات
201
20102
روانشناسی
201
20103
زبان
201
20201
اکشن
202
20202
کمدی
202
20203
جنایی
202
bagherok
سه شنبه 20 آبان 1393, 20:16 عصر
id
name
Parent_id
100
وسایل دیجیتالی
0
200
کتاب و رسانه
0
101
موبایل
100
102
تبلت
100
103
لپ تاپ
100
201
کتاب
200
202
فیلم
200
20101
شعر و ادبیات
201
20102
روانشناسی
201
20103
زبان
201
20201
اکشن
202
20202
کمدی
202
20203
جنایی
202
اگه جدول شما به همین صورت و حداکثر 2و 3 سطحی باشه یعنی
کتاب و رسانه-> کتاب->زبان
وسایل دیجیتالی->موبایل
خب الان خروجی مورد نظر شما از این جدول چیه
همه چی رو به غیر اونایی که فیلد parent_id
0 باشه!
http://sqlfiddle.com/#!2/562a4/12
select level1.name from category as level1
where level1.parent_id is not null
موبایل
کتاب
روانشناسی
زبان
و یا آخرین child ها
http://sqlfiddle.com/#!2/562a4/15
select level1.name as level1
from category as level1
left outer
join category as level2
on level2.parent_id = level1.id
where level1.parent_id is not null AND level2.id is null
موبایل
روانشناسی
زبان
bluedream
سه شنبه 20 آبان 1393, 22:45 عصر
مرسی :)
خیلی لطف کردین..
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.