<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.ecw.dal.mysql.region.RegionMapper">
    <!--
        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
     -->

    <select id="getByParentId" resultType="cn.iocoder.yudao.module.ecw.dal.dataobject.region.RegionDO">
        WITH RECURSIVE r AS (SELECT *
                             FROM ecw_region
                             WHERE id = #{id}
                             UNION ALL
                             SELECT ecw_region.*
                             FROM ecw_region,
                                  r
                             WHERE ecw_region.parent_id = r.id)
        SELECT *
        FROM r
        where deleted = 0
        order by sort;
    </select>

    <select id="getCityList" resultType="cn.iocoder.yudao.module.ecw.dal.dataobject.region.RegionDO">
        SELECT d.*
        FROM ecw_region a
                 LEFT JOIN ecw_region b ON a.id = b.parent_id
                 LEFT JOIN ecw_region c ON b.id = c.parent_id
                 LEFT JOIN ecw_region d ON c.id = d.parent_id
        WHERE a.parent_id = 0
          AND a.deleted = 0
          AND b.deleted = 0
          AND c.deleted = 0
          AND d.deleted = 0
          and a.status = 0
          and b.status = 0
          and c.status = 0
          and d.status = 0
    </select>

    <select id="getContinentCountry" resultType="cn.iocoder.yudao.module.ecw.dal.dataobject.region.RegionDO">
        SELECT *
        FROM ecw_region
        WHERE parent_id = 0
          AND deleted = 0
          and status = 0
        UNION ALL
        SELECT b.*
        FROM ecw_region a
                 LEFT JOIN ecw_region b ON a.id = b.parent_id
        WHERE a.parent_id = 0
          AND a.deleted = 0
          AND b.deleted = 0
          and a.status = 0
          and b.status = 0
    </select>

    <select id="getImportExportCountryList" resultType="cn.iocoder.yudao.module.ecw.dal.dataobject.region.RegionDO">
        SELECT b.*
        FROM ecw_region a
                 LEFT JOIN ecw_region b ON a.id = b.parent_id
        WHERE a.parent_id = 0
          AND a.deleted = 0
          AND b.deleted = 0
          and a.status = 0
          and b.status = 0
          and b.type in (1, 3)
    </select>
    <select id="getCityListByParentId" resultType="cn.iocoder.yudao.module.ecw.dal.dataobject.region.RegionDO">
        select b.* from ecw_region a
        left join ecw_region b on a.id = b.parent_id
        where a.parent_id = #{parentId}
        AND a.deleted = 0
        and b.deleted = 0
        and a.status = 0
        and b.status = 0
    </select>
</mapper>