【问题标题】:What does "my_something" means in oracle sql query?oracle sql查询中的“my_something”是什么意思?
【发布时间】:2021-11-10 20:01:33
【问题描述】:

我有一些 Java 代码可以运行这样的 SQL 查询:

SELECT DISTINCT ven.enterprise_network_id, st.*
FROM   studies st
       inner join v_enterprise_network_members ven on st.ib_id = my_ib_id
WHERE  ven.ib_id=:IB_ID
AND    (st.myvrn_expiration_date IS NULL OR st.myvrn_expiration_Date >= sysdate)
ORDER BY st.study_date DESC 

我什么都懂,除了我不明白st.ib_id=my_ib_id 是什么。这是什么意思?这是整个方法,以防万一:

public List<Study> searchRepository(StudySearchCriteria criteria, boolean isEnterpriseNetwork,
                    boolean isExactNameMatch) {
        String selectForNone = null;
        String studyStatus = null;
        studyStatus = verifyStudyStatus(criteria, studyStatus, isEnterpriseNetwork);
        
        if (criteria.contains(SearchField.STUDY_STATUS) && StringUtils.isBlank(studyStatus)) {
            return new ArrayList<>();
        }
        
        if (StringUtils.isNotBlank(studyStatus) && studyStatus.contains(StudyPacsState.State.NONE.toString())) {
            selectForNone = "DISTINCT {st.*}, st.study_date as stdate FROM studies st";
        }
        
        StringBuffer select = new StringBuffer(512);
        StringBuffer where = new StringBuffer(512);
        StringBuffer orderBy = new StringBuffer(selectForNone != null ? "" : " ORDER BY st.study_date DESC ");
        select.append("SELECT ");
        if (criteria.containsWildcard()) {
            select.append(queryHint);
        }
        if (!isEnterpriseNetwork) {
            select.append(selectForNone != null ? selectForNone : "DISTINCT {st.*} FROM studies st");
            where.append(" WHERE st.ib_id=:IB_ID AND ").append(myVrnSql);
        }
        else {
///////////////////////////////////// HERE IS WHERE my_ib_id is
            select.append("DISTINCT ven.enterprise_network_id, {st.*} FROM studies st")
                            .append(" inner join v_enterprise_network_members ven on st.ib_id=my_ib_id ");
/////////////////////////////////////
            where.append(" WHERE ven.ib_id=:IB_ID AND ").append(myVrnSql);
        }
        StringBuilder queryForNone = selectForNone != null ? new StringBuilder(" UNION ") : new StringBuilder(" ");
        
        createStudyStatusQuery(criteria, isExactNameMatch, studyStatus, where, queryForNone, false);

        buildStudyQuery(criteria, select, where, orderBy, isEnterpriseNetwork, isExactNameMatch, true, false);

        if (criteria.contains(SearchField.STUDY_STATUS)) {
            select.append(" , smr_study_pacs_state sps ");
        }
        SQLQuery sq = null;

        Query hq = null;
        if (isEnterpriseNetwork) {
            sq = getSession().createSQLQuery(select.toString() + where.toString());
            sq.addEntity("st", Study.class).addScalar("enterprise_network_id", StandardBasicTypes.LONG)
                            .setCacheable(false).setCacheRegion("vrnstudysearch");
        }
        else {
            sq = getSession().createSQLQuery(select.toString() + where.toString() + queryForNone.toString());
            sq.addEntity("st", Study.class).setCacheable(false).setCacheRegion("vrnstudysearch");
            if (selectForNone != null) {
                sq.addScalar("stdate", StandardBasicTypes.TIMESTAMP);
            }
        }
        hq = sq;
        hq.setLong(SearchField.IB_ID.toString(), (Long) criteria.get(SearchField.IB_ID));
        supplyParameters(criteria, hq, isExactNameMatch);
        logger.info("Query searchRepository {}", hq.getQueryString());

        List<Study> result = null;
        if (!isEnterpriseNetwork) {
            if (selectForNone != null) {
                List<?> returned = hq.list();
                if (returned != null) {
                    result = new ArrayList<Study>();
                    for (Object n : returned) {
                        Object[] tuple = (Object[]) n;
                        Study st = (Study) tuple[0];
                        result.add(st);
                    }
                }
            }
            else {
                result = hq.list();
            }
        }
        else {
            List<?> returned = hq.list();
            if (returned != null) {
                result = new ArrayList<Study>();
                for (Object n : returned) {
                    Object[] tuple = (Object[]) n;
                    Study st = (Study) tuple[0];
                    st.setEnterpriseNetworkId((Long) tuple[1]);
                    result.add(st);
                }
            }
        }
        logger.debug(" returned " + (result == null ? 0 : result.size()));

        return result;
    }

【问题讨论】:

  • 这是连接条件。
  • studiesv_enterprise_network_members 是否有名为 my_ib_id 的列?确实,最好用stven 作为前缀。不过,您可能对my_ 前缀读得太多了。这只是某人想出的一些奇怪的列名。

标签: java sql oracle syntax


【解决方案1】:

st.ib_id=my_ib_id 是连接条件 - 它定义了您在查询中连接的两个表之间的关系。据推测,my_ib_id 是其中一个表中的一列。

【讨论】:

  • 你是对的。 ven.enterprise_network_id 表有 my_ib_id。谢谢!
猜你喜欢
  • 2012-07-29
  • 1970-01-01
  • 2011-04-16
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多