PDA

View Full Version : به دست اوردن زیر مجموعه های یک رکورد



Veteran
شنبه 15 تیر 1392, 23:23 عصر
در عکس زیر چجوری میتونم به جای اینکه خود مقدار های فیلد parent به خروجی بره مقدارهای فیلد title ایی بره که id اون برابر فیلد parent هست؟

106712
این کد رو من با یکم تغییراتی که توش دادم هنوز به اون چیزی که میخوام خروجی نمیده
SELECT a.id, a.title, a.link, Deriv1.Count FROM `menu` a LEFT OUTER JOIN (SELECT parent, COUNT(*) AS Count FROM `menu` GROUP BY parent) Deriv1 ON a.id = Deriv1.parent WHERE a.parent=0
106738
اما خب میخوام خروجی به این شکل بشه
106739
چه تغییراتی باید بدم ؟!

javadt
شنبه 15 تیر 1392, 23:49 عصر
اين كوئري رو امتحان كنيد
select id, title, parent from tbl
where
id=Parent

MMSHFE
شنبه 15 تیر 1392, 23:56 عصر
ساختار کامل جدولتون رو (ترجیحاً بصورت یک Screenshot کامل از دیتابیس جدول) بگذارین.

H:Shojaei
یک شنبه 16 تیر 1392, 00:00 صبح
سلام
اگه درست منظورتون رو فهميده باشم با اين كد ميشه انجامش داد:

SELECT title
FROM `menu`
WHERE `id` = `parent`;

ضميمه هاي دوم و سومتون هم مشكل دارن.

Veteran
یک شنبه 16 تیر 1392, 00:02 صبح
این خوده جدول

Veteran
یک شنبه 16 تیر 1392, 14:20 عصر
دوستان لطفا راهنمایی کنین

MMSHFE
یک شنبه 16 تیر 1392, 14:39 عصر
(
SELECT *
FROM `category_list`
WHERE (`parent`='0')
)
UNION
(
SELECT `category_list`.`id`,`category_list`.`title`,`cl`. `title` as `parent`
FROM `category_list`
JOIN `category_list` AS `cl`
ON `category_list`.`parent`=`cl`.`id`
)

Veteran
یک شنبه 16 تیر 1392, 14:46 عصر
جناب شهرکی میشه یکم در مورد تجزیه تحلیلی که پیش خودتون کردین ی توضیح بدین ؟
من همیشه توی کوئری نوشتن مشکل داشتم.
توی هنرستان زیاد در این باره باهامون کار نکردن
فقط SELEC ,insert,update,delete رو بهمون گفتن
منبع خوب سراغ ندارین ؟ بریم برطرف کنیم این ضعف رو

MMSHFE
یک شنبه 16 تیر 1392, 20:53 عصر
تجزیه تحلیل خاصی نداره. ببینید، شما ابتدا باید جدول رو با خودش JOIN کنید ولی برای این کار، نیازمند این هستین که با دستور AS به جدول یک اسم مستعار بدین تا بتونید با خودش اون رو JOIN کنید. بعد با کلمه ON، فیلد الحاق رو مشخص میکنید که در اینجا، فیلد parent از جدول اصلی باید با فیلد id از جدول دوم (مستعار) برابر باشه. بعد از این کار، فقط رکوردهایی که parent اونها صفر نبوده، انتخاب میشن چون اونهایی که دارای parent صفر بودن، با هیچ رکوردی توی جدول مستعار، تطبیق نداشتن. اما اونها رو هم لازم داریم. خوب راه حل چیه؟ اینکه اونها رو جداگانه انتخاب کنیم و با دستور UNION این دو دسته رکورد رو با هم ادغام کنیم. اما این وسط یه مشکل کوچک هست و اونهم اینکه فیلد آخر در SELECT دوم، اسمش title هست درحالی که توی SELECT اول اسمش parent هست و UNION هم نیازمند اینه که ساختار دو جدول دقیقاً مثل هم باشه. پس با یک دستور AS دیگه، فیلد سوم رو توی SELECT دوم به parent تغییر نام میدیم تا این مشکل هم حل بشه.
موفق باشید.