[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Mysql cортировка по двум полям
file_xz
Привет, как отсортировать по нескольким полям это я конечно знаю) через ORDER BY `значение` ASC|DESC, `значение` ASC|DESC и так далее.
Тут не много другое.
Есть таблица:

`id` int(10)
`title` varchar(255)
`category_id` int(10)

Если category_id NULL, то это категория.
Если category_id IS NOT NULL, статья
Мне нужно отсортировать статья по title категорий (значение category_id).
Страница разбита на пагинацию, если бы была одна страница то хватило добавлять все что есть из таблицы в массив (Ключ == категория)
Потом запрос в БД на получение списка категорий с сортировкой ORDER BY `title` ASC и из массива показывать на странице статьи.

Но так как разбита на пагинацию, то я бы мог написать так:
1) Запрос в бд WHERE `category_id` IS NULL ORDER BY `title` ASC
Здесь я получу список всех категорий и добавлю их id в массив.
2) $num=0;
foreach(массив as $id)
Здесь будем делать запрос SELECT COUNT(*) FROM `таблица` WHERE `category_id`=$id
Получив значение проверяем если $num+count больше идем дальше, если меньше начинаем выводить статьи с данной категории и с остальных пока не уложимся в лимит на странице.
В категории `category_id`=$id которая была первая, то есть когда условие $num+count было меньше будет (LIMIT N, количество страниц на странице) посчитаем с какой именно статьи выводить, а с остальных доберем оставшиеся и остановим цикл.

Универсального же нет запроса в БД? JOIN какой то, чтоб не изобретать велосипед описанный выше.
Valick
Нарушая законы нормализации БД, вы отстреливаете себе ноги. Отдельная таблица для категорий, отдельная таблица для статей и не надо будет изобретать велосипеды.
И запомните одно золотое правило, если при работе с БД речь заходит о запросах в цикле, вы 100% делаете что-то не правильно. SQL и циклы - это несовместимые понятия.

_____________
Стимулятор ~yoomoney - 41001303250491
file_xz
Цитата (Valick @ 8.03.2021 - 19:49)
Нарушая законы нормализации БД, вы отстреливаете себе ноги. Отдельная таблица для категорий, отдельная таблица для статей и не надо будет изобретать велосипеды.
И запомните одно золотое правило, если при работе с БД речь заходит о запросах в цикле, вы 100% делаете что-то не правильно. SQL и циклы - это  несовместимые понятия.

Вообще это не статьи, это идут подкатегории и они находятся в одной таблице - проект писал не я - я его только правлю, что то менять уже поздно, через JOIN как то можно решить данную задачу?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.