您如何验证包含多个联接的查询

时间:2019-05-04 10:53:05

标签: sql oracle

我需要验证从多联接查询返回的数据是正确的。

此查询将在经过验证的系统中运行,我们需要证明其返回的数据正确。

有人告诉我我们需要运行查询,以便测试每个联接。

这是我的查询:

SELECT 
  DISTINCT 
    tph.PROJECT, 
    p.T_PH_STUDY_TYPE, 
    p.PROTOCOL_TEMPLATE, 
    p.C_ISEPAGLP, 
    p.C_GLP_STUDYNAME, 
    tph.STUDY_SITE, 
    p.T_PH_MATERIAL_TYPE, 
    p.C_STUDY_YEAR, 
    p.T_PH_COMMENT, 
    tph.BATCH_REFERENCE, 
    tph.PRODUCT, 
    tph.ITEM_CODE,
    tph.PRODUCTION_DATE, 
    tph.BATCH_SIZE, 
    tph.C_VESSEL, 
    tph.C_VENDOR_BATCH, 
    tph.C_SUPPLIER, 
    tph.PACKAGING_TYPE, 
    tph.C_FILL_QTY, 
    tph.PACKAGING_DESCRIPTION,
    tph.C_EXPIRY_DATE, 
    tph.C_FILL_UNITS, 
    tph.C_PACKAGING_LINE, 
    tph.C_CONTAINER_PART_NO, 
    tph.C_CONTAINER_DESC, 
    tph.C_CLOSURE_PART_NO,
    tph.C_CLOSURE_DESC, 
    tph.C_SUBSTRATE_PART_NO, 
    tph.C_SUBSTRATE_DESC, 
    tph.C_FILM_SEAL_PART_NO, 
    tph.C_FILM_SEAL_DESC, 
    p.STATUS , 
    s.DATE_STARTED,
    t.ANALYSIS, 
    t.VERSION, 
    s.Sample_Number 
 FROM SAMPLE s 
 INNER JOIN Project p             ON s.PROJECT = p.NAME 
 INNER JOIN T_PH_TEST_ARTICLE tph ON tph.PROJECT = p.NAME 
 INNER JOIN TEST t                ON t.SAMPLE_NUMBER = s.SAMPLE_NUMBER 
 WHERE (###) ORDER BY 36, 34, 35 ASC

我正在考虑通过从每个表中选择一个参数以及其他表来测试查询。换句话说,进行组合计算。

测试这种查询的最有效(最简单)方法是什么?

1 个答案:

答案 0 :(得分:0)

  

我当时正在考虑通过从中选择一个参数来测试查询   每个表,以及其他表。换一种说法   运行组合计算。

     

测试这种查询的最有效(最简单)方法是什么?

一个想法可能是使用WITH ... AS (..)构造,或多或少像

WITH expected_results AS ( 

  [expected_results] 
) 
SELECT
 needed_query.*
FROM
 expected_results 
INNER JOIN (
  [test_query]
) AS needed_query
ON
  [filter_check]

查看简单的demo。 是的,我知道数据库在测试中是PostgreSQL,该查询在Oracle中也应该可以正常工作,但是您需要更改CTE查询以从DUAL

中进行选择