powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проверка древа категории
4 сообщений из 4, страница 1 из 1
Проверка древа категории
    #38354123
lans8097
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток уважаемые форумчани.
Есть вот такая таблица

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DROP TABLE IF EXISTS `category`;
CREATE TABLE IF NOT EXISTS `category` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `sweat_category` INT(10) UNSIGNED DEFAULT NULL,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `ixCategoryName` (`name`),
  INDEX `ixSweatCategory` (`sweat_category`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

/* Дамп */
INSERT INTO `category2` (`sweat_category`,`name`) VALUES (NULL,'Категория 1') , (1,'пот категория категория 2') , (2,'пот категория категория 3') , (NULL,'пот категория категория 3');



Обращение к категориям происходит не по id | sweat_id а по имени тобиш вот так:

Категория 1/Категория 2/Категория 3

Цель задачи: Нужно получить select последней указанной категории;
На уровне php делал через цикл:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<?php
$array =array(
	'Категория 1',
	'пот категория категория 2',
	'пот категория категория 3'
);

$sweat_category=null;
FOREACH ($array AS $categoryName){
	$myrow = mysql_query("SELECT `sweat_id` 
					FROM `category2` 
						WHERE
						`sweat_category`='".$sweat_category."' AND 
						`name`='".$categoryName."' 
							LIMIT 1");
	if(mysql_num_rows($myrow)){
		$result = mysql_fetch_assoc($myrow);
		$sweat_category = $result['id'];
	}else{
		die('Такой категории не существует');
	}
}
return $result;
?>



Задумка проста но когда такую конструкцию затрагивает 100+ пользователей на глубину от 3 до 10+ напряжное количество запросов,
А вот и сам вопрос:
Как лучше реализовать данную проверку на уровне Mysql, тобиш нужно проверить древо и выдать последний результат
...
Рейтинг: 0 / 0
Проверка древа категории
    #38354151
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lans8097,

FAQ принципиально не читаете?
В первой строке форума, закреплено, - для кого?
...
Рейтинг: 0 / 0
Проверка древа категории
    #38354153
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007,

Там чтение фака - врядли поможет, поскольку приведенный пример НЕ соответствует приведённому DDL таблицы, да и ваще запрос по-просту нерабочий. Должна выскочить ошибка: попытка получить несуществующее поле.

Да и приведенный ПХП код - не рабочий "в целом": он ходит не по содержимому таблицы, а по изначально заданному массиву - успешность полностью зависит от содержимого массива. Зачем ваще таблица? Вернет или последний результат или нуль. И, задача стояла загрузить проц, а то ему "делать нечего", нет?

И опять же, как обычно, постановка задачи "сама в себе": относительно чего должна быть эта самая "пот" категория последней, особенно если "обращение" к ней по имени?

Судя по примеру, напрашивается банальный ответ: SELECT id where name="имя последней пот категории".
...
Рейтинг: 0 / 0
Проверка древа категории
    #38354160
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

я так понял, что вместо одного требуемого значения возвращаются два .
Поэтому все же - RTFM
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проверка древа категории
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]