Вопрос о INNER JOIN с Informix влияет на класс данных - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть класс данных, который получает данные из запросов ниже. Мой вопрос заключается в том, почему первый запрос не работает, но второй работает, если я перемещаю одну из процедур cf_cbp_GetBusParm( 'TITL', 'TAEM', code, TODAY) email в INNER JOIN

Класс данных:

import io.ebean.Finder
import javax.persistence.Entity
import javax.persistence.Id

@Entity
data class TA(
    @Id
    val code: String? = null,

    val name: String? = null,

    val email: String? = null,

    val rc: String? = null,

    val cco: String? = null,

    val vsp: String? = null
) {
    companion object Find : Finder<String?, TA>(TA::class.java) {
        override fun all() : List<TA> {
            val sql = """
                SELECT a.code, a.desc as name, c.email, cf_ccl_desccode( 'NSRC', a.code ) rc,
                        cf_ccl_desccode( 'NSCO', a.code ) cco, cf_ccl_desccode( 'NSVP', a.code ) vsp
                FROM crs_sys_code a
                INNER JOIN (
                    SELECT code, cf_cbp_GetBusParm( 'TITL', 'TAEM', code, TODAY) email
                                    FROM crs_sys_code
                        where scg_code = 'NSTA'
                ) c ON a.code = c.code
                WHERE scg_code = 'NSTA'
                AND  length(a.code) = 3
                ORDER BY a.code
            """.trimIndent()
            return TA.nativeSql(sql).findList()
        }
}
}

Запросы:

SELECT code, desc as name, cf_cbp_GetBusParm( 'TITL', 'TAEM', code, TODAY) email, cf_ccl_desccode( 'NSRC', code ) rc,
                        cf_ccl_desccode( 'NSCO', code ) cco, cf_ccl_desccode( 'NSVP', code ) vsp
FROM crs_sys_code
where scg_code = 'NSTA'
and  length(code) = 3
and status = 'CURR'
order by code

_________________________________________________________________________________________________________

SELECT a.code, a.desc as name, c.email, cf_ccl_desccode( 'NSRC', a.code ) rc,
                        cf_ccl_desccode( 'NSCO', a.code ) cco, cf_ccl_desccode( 'NSVP', a.code ) vsp
                FROM crs_sys_code a
                INNER JOIN (
                    SELECT code, cf_cbp_GetBusParm( 'TITL', 'TAEM', code, TODAY) email
                                    FROM crs_sys_code
                        where scg_code = 'NSTA'
                ) c ON a.code = c.code
                WHERE scg_code = 'NSTA'
                AND  length(a.code) = 3
                AND status = 'CURR'
                ORDER BY a.code
...