|
|
|
| Всем доброго времени суток. Возник вопрос, связанный с limit
Есть запрос к БД
$sql = "SELECT order.id, order.user_num, order.date, order.status, order.id_company, order.client, clients.name,
order.parent, order.what, company.form, company.name FROM `order`, `clients`, `company` WHERE order.id_company IN
($company) and clients.id=order.client and order.parent='$ParentID' and company.id=order.id_company $where ORDER BY
id DESC LIMIT $start, $num";
|
Этот запрос выводит древовидный список.
Все отлично работает, когда
$start = 0;
Но когда, значение 20, 40 и т.д. древовидность пропадает.
Собственно 2 вопроса, почему так происходит и как это исправить? | |
|
|
|
|
|
|
|
для: kapitalist
(15.09.2015 в 18:52)
| | Вы уверены что у вас правильные значения подставляются в и | |
|
|
|
|
|
|
|
для: KPETuH
(16.09.2015 в 10:18)
| | Да, на 100%. Проверил через echo. Я бы скинул дамп, чтобы проверить, но в базе конфиденциальная информация, поэтому не могу показать ее... | |
|
|
|
|
|
|
|
для: KPETuH
(16.09.2015 в 10:18)
| | Например:
SELECT order.id, order.user_num, order.date, order.status, order.id_company, order.client, clients.name, order.parent,
order.what, company.form, company.name FROM `order`, `clients`, `company` WHERE order.id_company IN (7,9,22,17) and
clients.id=order.client and order.parent='4227' and company.id=order.id_company ORDER BY id DESC LIMIT 0, 20
|
Отлично работает. Дерево отображается.
SELECT order.id, order.user_num, order.date, order.status, order.id_company, order.client, clients.name, order.parent,
order.what, company.form, company.name FROM `order`, `clients`, `company` WHERE order.id_company IN (7,9,22,17) and
clients.id=order.client and order.parent='4111' and company.id=order.id_company ORDER BY id DESC LIMIT 20, 20
|
Не отображает дерево ((( | |
|
|
|
|
|
|
|
для: kapitalist
(16.09.2015 в 10:28)
| | Селект и не должен ничего отображать. Его задача вернуть данные.
Если второй запрос возвращает то, что должен - значит проблема не в запросе.
Если нет, то возможно вы не до конца понимаете, что от него требуете, либо просто данных таковых в базе нет.
Кстати, для второго запроса другой парент используется - 4111 вместо 4227 | |
|
|
|
|
|
|
|
для: Igorek
(16.09.2015 в 12:42)
| | Я понимаю, что отбражение идет через Php код.
Данные точно в бд есть...
Понятное дело для второго запроса используется другое значение ))) Я же прямо с живой базы запрос написал. | |
|
|
|
|
|
|
|
для: kapitalist
(16.09.2015 в 18:19)
| | Этот запрос например phpmyadmin вам данные отдает нужные или нет? | |
|
|
|
|
|
|
|
для: KPETuH
(17.09.2015 в 11:22)
| | Да в том и прикол, что не отдает. Если бы отдавал было бы ясно, что косяк в php скрипте. | |
|
|
|
|
|
|
|
для: KPETuH
(17.09.2015 в 11:22)
| | Создал тестовую базу, решил поиграть с ней. И все равно не могу понять, как написать нужный запрос. Т.к. если в запросе использовать Limit даже в phpmyadmin отдает не то что нужно.
CREATE TABLE IF NOT EXISTS `tree` (
`id` int(11) NOT NULL,
`title` varchar(100) NOT NULL,
`parent_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `tree`
--
INSERT INTO `tree` (`id`, `title`, `parent_id`) VALUES
(1, 'первый', 0),
(2, 'второй', 0),
(3, 'третий', 0),
(4, 'во втором', 2),
(5, 'во втором1', 2),
(6, 'во втором2', 2),
(7, 'во втором3', 2),
(8, 'подпункт', 3),
(9, 'подпункт2', 6),
(10, 'подпункт3', 6);
|
| |
|
|
|
|