Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Помогите пожалуйста с такой выборкой.
Связываю таблицу А (список товаров) отношением 1-ко-многим к дочерней таблице Б (параметры товаров) через LEFT JOIN и естественно получаю в итоговой выборке все записи связанные с таблицей А. Ограничение LIMIT M, N применяется к итоговой выборке с учетом таблицы Б и общее количество найденных строк тоже с учетом таблице В. В итоге плывет постраничный вывод и некорректное количество найденных строк. Как сделать чтобы ограничение LIMIT M, N применялось бы только к родительской таблице А и запрос на общее число найденных строк SELECT FOUND_ROWS() учитывал бы только исходную таблицу А.
Ничего кроме как сделать так:
Неактивен
Хотя на самом деле, попробовал - не подходит этот вариант, не верно подсчитывается общее количество без учета LIMIT ( т.к. SQL_CALC_FOUND_ROWS нельзя расположить во внутреннем select)
вообщем засада...
Неактивен
отдельный запрос
select count(*) from table A where clause_A LIMIT M, N
про SQL_CALC_FOUND_ROWS см http://sqlinfo.ru/forum/viewtopic.php?id=6876
Неактивен
vasya написал:
отдельный запрос
select count(*) from table A where clause_A LIMIT M, N
про SQL_CALC_FOUND_ROWS см http://sqlinfo.ru/forum/viewtopic.php?id=6876
проблема в том, что часть столбцов в условии отбора находятся как-раз в присоединяемых таблицах. А без них количество найденного будет иным , чем с ними
Неактивен
покажите на примере, что вы хотите посчитать
Неактивен
В таблице parent_table список товаров. В таблицах child_param_table_1 и child_param_table_2 списки параметров товара (их может быть и несколько у одного товара)
Неактивен
Неактивен
т.е делать отдельный запрос только для количества и одним запросом никак не обойтись? Не очень оптимально с точки зрения скорости
Может у меня не правильная схема данных и это как-то по другому делают?
Неактивен
Страниц: 1