Проблема с orderby в столбце datetime - PullRequest
0 голосов
/ 29 августа 2011

У меня есть база данных, к которой у меня сейчас нет прямого доступа, с помощью phpmyadmin (я потерял пароль).

В запросе используется группировка по (если это актуально), и мне нужно упорядочить ее по полю даты, я могу только предположить, что это поле даты и времени. Такие даты выводятся, когда я их выводю напрямую {ts '2011-08-25 11:15:52'}. Мне нужно сделать заказ к этой дате.

Я пробовал это, но это никак не влияет на порядок.

ORDER BY i.createdOn DESC

Весь запрос здесь.

    <cfquery name="dbRsResults1" datasource="#datasource#" maxrows="#irMaxResults+1#">
    SELECT DISTINCT i.id                AS  id,
                    i.company           AS  company,
                    i.insolvencyDate    AS  insolvency_date,
                    i.city              AS  city,
                    i.createdOn         AS  createdOn,
                    1                   AS  rank_id,
                    t.entryCopy         AS  insolvency_type,
                    i.businessNature    AS  business_nature,
                    'I'                 AS  i_type
    FROM            insolvencies i,
                    <!---practitioners p,--->
                    lookupcopy t
    WHERE           i.checked           =   1                   AND
                    t.id                =   i.insolvencyType    <!---AND
                    p.id                =   i.practitioner--->
                    <!---<cfif isUseDates is "Y">--->
                        AND i.insolvencyDate    >=  #isStartDate#       AND
                        i.insolvencyDate    <=  #isEndDate#
                    <!---</cfif>--->
                    <cfif isType neq 0>
                        AND i.insolvencyType    =   #isType#
                    </cfif>
                    <cfif isRegion  gt 0>
                        AND i.region    =   #isRegion#
                    </cfif>
                    <cfif isCategory gt 0>
                        AND i.businessCategory  =   #isCategory#
                    </cfif>
                    <cfif termsCount gt 0>
                        AND (
                        <cfloop from="1" to="#termsCount#" index="i">
                            (LOWER(i.company)       LIKE    '%#trim(aTerms[i])#%'   OR
                            LOWER(i.businessNAture)     LIKE    '%#trim(aTerms[i])#%')
                            <cfif i LT termscount>
                            OR
                            </cfif>
                        </cfloop>
                        )
                    </cfif>
        GROUP BY        id
                <cfif isSearchByDate is "Y">
                    ORDER BY i.createdOn DESC
                </cfif>
</cfquery>

Ответы [ 2 ]

3 голосов
/ 29 августа 2011

Когда вы используете GROUP BY, как следует из названия, вы генерируете новые строки, которые являются комбинацией одной или нескольких физических строк.Вы не получите никакого полезного порядка сортировки, если упорядочите по значениям из исходных строк.Пример:

Name    Country Age
======= ======= ===
Abe     UK      20
Bill    France  30
Charles France  25
David   UK      45
Edward  UK      33

Если мы запустим:

SELECT Country, MIN(age) AS min_age
FROM people
GROUP BY Country

... мы получим что-то вроде этого:есть смысл заказывать по имени.

1 голос
/ 29 августа 2011

Если ваш запрос не сгруппирован по createdOn, то ваш заказ по предложению не будет действовать.

Вам необходимо упорядочить по выбранному столбцу с группировкой по.

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