Is it right query in sql.xml used with group by?

Viewed 36

I use MYSQL DB and I want to select data to use 'group by'. In MYSQL workbench I checked with this query (REQDT, RESDT are varchartype)

SELECT
        DATE_FORMAT(REQDT, '%Y-%m-%d') AS REQDT,
        DATE_FORMAT(RESDT, '%Y-%m-%d') AS RESDT, SVCE_DOMAIN, COUNT(SVCE_DOMAIN)
        FROM BC_HISTORY

        GROUP BY DATE_FORMAT(REQDT, '%Y-%m-%d')

And query below wrote on SQL.xml

<select id="selectpick" parameterType="JSON" resultType="JSON">

        SELECT
        DATE_FORMAT(REQDT, '%Y-%m-%d') AS REQDT,
        DATE_FORMAT(RESDT, '%Y-%m-%d') AS RESDT, SVCE_DOMAIN, COUNT(SVCE_DOMAIN)
        FROM BC_HISTORY

        GROUP BY DATE_FORMAT(REQDT, '%Y-%m-%d')

    <when test="@com.typhoon.framework.json.JSONValidation@notEmpty(log_yyyymmdd_from) and @com.typhoon.framework.json.JSONValidation@notEmpty(log_yyyymmdd_to)">
                    AND date_format(REQDT, '%Y-%m-%d') BETWEEN #{log_yyyymmdd_from} AND #{log_yyyymmdd_to}
                </when>

                <when test="@com.typhoon.framework.json.JSONValidation@notEmpty(log_yyyymmdd_from)">

                    <![CDATA[

            AND date_format(REQDT, '%Y-%m-%d') >= #{log_yyyymmdd_from}

            ]]>

                </when>

                <when test="@com.typhoon.framework.json.JSONValidation@notEmpty(log_yyyymmdd_to)">

                    <![CDATA[

           AND date_format(REQDT, '%Y-%m-%d') <= #{log_yyyymmdd_to}

            ]]>

                </when>

            </choose>

(@com.typhoon.framewroks is library just check null)

In this case, I used 'DatePicker' in Javascript to get the date. And pick data from Date between log_yyyymmdd_from andlog_yyyymmdd_to and return to HTML. But when I run the server and pick the date, It shows nothing. Any data appears on HTML. I'm wondering the query I wrote on XML is right. PLease, save me.....

1 Answers

I finally found out. If you wrote like me. You can see the error message like syntax error near .... because I wrote group by clause on wrong place. So the right query is the 'group by' clause had written under the 'where' clause. For example

    select * from table
    <where>/<where>
    group by .....

This is just simple mistake but I wrote this solution for someone who may have same problem like me.

Related