PDA

View Full Version : вопрос.


Alexander-V-Sh
16.06.2006, 20:00
Если можно, переименуйте топик, потому что как коротко сформулировать свой вопрос незнаю.
Изменяю модуль Download, там в таблице downloads_categories есть поля cid, title и parentid.

Нужно имея значения поля parentid вынуть название title из того cid, который указан parentid.
..... умно так сказал, сам не понял :)

На примере, вот таблица:
CREATE TABLE `downloads_categories` (
`cid` int(11) NOT NULL auto_increment,
`title` varchar(50) NOT NULL default '',
`cdescription` text NOT NULL,
`parentid` int(11) NOT NULL default '0',
PRIMARY KEY (`cid`),
KEY `cid` (`cid`),
KEY `title` (`title`)
)
downloads_categories` VALUES (1, 'Программы', '', 0);
downloads_categories` VALUES (2, 'Графика и дизайн', '', 1);
downloads_categories` VALUES (3, 'Графика', '', 0);
downloads_categories` VALUES (4, 'Сканы', '', 3);
downloads_categories` VALUES (5, 'Иконки и смайлики', '', 3);
downloads_categories` VALUES (6, 'Анимация GIF', '', 3);

После запроса в базу получаем данные из CID 5. Выводим подраздел: Иконки и смайлики и имеем 2 значения CID и PARENTID.
Нужно зная этот PARENTID=3 вывести еще TITLE Графика, CID которого=3

Чтобы получилось Раздел: Графика. Подраздел: Иконки и смайлики.
------------
Насколько я понимаю, еще раз сделать запрос в БД, где CD=3.
Правильно ли понимаю, или можно проще?

Soniks
16.06.2006, 21:56
да все правильно понимаете, единственное можно сразу вывести всю таблицу downloads_categories и завести ее в массив, а затем выводить данные по cid

Alexander-V-Sh
20.06.2006, 21:44
Еще вопросик. Хочу сделать вывод всех файлов, которые относятся к категории, а в таблице для файлов нет parentid.

Условие, если parentid=0, то это главная категория и зная ее CID нужно найти из остальных записей, где parentid=ее cid. И потом по найденым записям и их cid запросить уже из другой таблицы файлы....
Понятия не имею как такое возможно сделать и возможно ли вообще?

Неохто переделывать админку и добавлеть поле parentid в сами файлы, но чувствую придется :)

Soniks
21.06.2006, 01:13
это выполнить довольно просто при помощи сложного запроса используя например такой оператор как Left Join

Alexander-V-Sh
21.06.2006, 22:29
Если не сложно и будет свободная минутка, не могли вы запрос этот поправить...

Left Join у меня только на примере оптимизации новостей, а тут еще и условие... не соображу никак...

$result = $db->sql_query("SELECT d.*, c.* FROM ".$prefix."_downloads_downloads AS d LEFT JOIN ".$prefix."_downloads_categories AS c ON(c.parentid='$cid') order by $orderby limit $min,$perpage");

Нужно вынуть все файлы, CID которых = CID категорий, а те в свою очередь найти, зная их PARENTID равный настоящему CID..

Запутался капитально с этими CID.. даже вопрос сфигурировать сложно...

Alexander-V-Sh
22.06.2006, 18:58
--------
вроде разобрался, только не через Left Join, но тоже запросом сразу в 2 таблицы.