Вывод с группировкой и mySql Order By - PullRequest
0 голосов
/ 14 января 2019

В демонстрационных целях, скажем, у меня есть следующий запрос:

SELECT a_label, aID, b_label, bID, c_label, cID, d_label, dID, orderByA, orderByB, orderByC 
FROM table
ORDER BY orderByA, orderByB, orderByC

На стороне дисплея можно сортировать LI, и их соответствующие позиции сохраняются в соответствующем столбце таблицы.

В моем выводе я зацикливаюсь на данных и должен использовать <cfoutput query="qryName" group="aID">, а затем подгруппа использует <cfoutput group="bID"> с другой подгруппой, использующей <cfoutput group="cID"> и т. Д.

Моя проблема в том, что я не могу понять, как должен выглядеть запрос, чтобы мои результаты были сгруппированы правильно. Нужно ли группировать в моем запросе sql или оставить его в коде cfm? А как насчет заказа по?

Я предполагаю, что я спрашиваю, как вы узнаете, когда группировка относится к запросу против кода?

ОБНОВЛЕНО С НЕКОТОРЫМ КОДОМ CFM

<cfoutput query="#aw#" group="cID">
    <ul class="listItem pItem">
        <cfoutput group="pID">
            <li class="listItem pTitle"  data-cid="#aw.cID#" data-pid="#aw.pID#" data-wid="#aw.wID#">
                <i class="glyphicon glyphicon-chevron-right rotate wToggle"></i> <input type="checkbox" name="p" class=""> #aw.pLabel#
                <ul class="listItem wItem hide">
                    <cfoutput group="wID">
                        <li class="listItem wTitle" id="w_#aw.cID#_#aw.pID#_#aw.wid#_#aw.woaid#">
                            <i class="glyphicon glyphicon-chevron-right rotate dToggle font-blue-madison"></i> <input type="checkbox" name="w" class=""> #aw.wLabel#
                            <ul class="listItem dItem hide">
                                <cfoutput>
                                   <li class="listItem dTitle" id="d_#aw.cID#_#aw.pID#_#aw.wID#_#aw.dID#_#aw.woaid#"> 
                                        <input type="checkbox" name="d" class="child"> #aw.dID#
                                    </li>
                                </cfoutput>
                            </ul>
                        </li>
                    </cfoutput>
                </ul>
            </li>
        </cfoutput>
    </ul>
</cfoutput>

Пользователь может перетаскивать элементы из одного раздела в другой раздел, но только если разделы одного уровня. Например, dItem можно переместить только в другой контейнер с dItem. Аналогично, wItem можно переместить только на другой wItem и т. Д.

Я работаю над запросом sql и обновлю этот вопрос. Я начинаю с одного уровня за раз вместо всего запроса в одно и то же время (делая это размером с кусочек).

UPDATE Я думаю, что нашел проблему, плохие данные. Некоторые из элементов не имеют значения в соответствующих orderBy*, поэтому сгруппированные элементы находятся в неправильном порядке в подгруппе. Значение по умолчанию для вновь добавленных элементов было NULL, но я думаю, что это должно быть другое значение. Существует ли рекомендуемое значение по умолчанию для sortby столбцов?

ОБНОВЛЕНИЕ ii Я нашел этот вопрос SO, Вставить и установить значение с max () + 1 задачами , которые я мог бы реализовать при добавлении новых элементов. Таким образом, он появится в конце списка.

1 Ответ

0 голосов
/ 19 января 2019

Понял! Мои <cfoutput...group=... должны совпадать / группироваться по тем же столбцам (и порядку), что и в предложении GROUP BY. Как только я их сопоставил, мой вывод соответствовал тому, что я видел в базе данных.

Обновлен SQL
SELECT a_label, aID, b_label, bID, c_label, cID, d_label, dID, orderByA, orderByB, orderByC FROM table ORDER BY cID, orderByA, orderByB, orderByC

orderByC просто для хорошей меры, для последнего тега <cfoutput> группировка не требуется.

Обновлен CFM (удален несущественный код, чтобы выделить решение

<cfoutput query="#aw#" group="cID">
<ul class="listItem pItem">
    <cfoutput group="orderByA">
        <li class="listItem pTitle">
            <i class="glyphicon glyphicon-chevron-right"></i> #aw.pLabel#
            <ul class="listItem wItem hide">
                <cfoutput group="orderByB">
                    <li class="listItem wTitle">
                        <i class="glyphicon glyphicon-chevron-right"></i>#aw.wLabel#
                        <ul class="listItem dItem hide">
                            <cfoutput>
                               <li class="listItem dTitle"> 
                                    #aw.dID#
                                </li>
                            </cfoutput>
                        </ul>
                    </li>
                </cfoutput>
            </ul>
        </li>
    </cfoutput>
</ul>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...