我已经搜索,但可以找到任何适合我需要的例子。也许我迷失在我的查询的许多联合...子查询里面的兆查询
我从三个Oracle 11g表--ATE_TESTS,ATE_DATA和TM_CONDITION_DYNAMIC返回数据。查询有其他表加入这些表。事实上,有不少于7个连接。
ATE_DATA可能在连接的多边有多条记录,但我只想要最后一行写入的行。 ATE_DATA有一个递增的主键,我希望在子查询中的聚合函数MAX(DATA_PK)中使用它。我认为它应该在主查询的WHERE子句中,但我不知道如何实现这个,并且可能有更好的方法。
也许我可能受过教育?
我的查询是:
SELECT ate_serial, data_data, dyn_value
FROM ate_tests
LEFT JOIN ate_test_procedure
ON ate_tests.ate_pk = ate_test_procedure.proc_ate_test_fk
LEFT JOIN ate_test_data
ON ate_test_procedure.proc_pk = ate_test_data.data_ate_test_procedure_fk
LEFT JOIN tm_test_procedure
ON ate_test_procedure.proc_test_procedure = tm_test_procedure.proc_pk
LEFT JOIN tm_test_specification
ON ate_test_data.data_specification = tm_test_specification.spec_pk
LEFT JOIN tm_test_condition_dynamic
ON tm_test_specification.spec_condition_set_fk = tm_test_condition_dynamic.dyn_condition_set_fk
LEFT JOIN tm_test_sequences
ON ate_tests.ate_sequence_fk = tm_test_sequences.seq_pk
LEFT JOIN lu_tm_products_model
ON tm_test_sequences.seq_model = lu_tm_products_model.lumod_pk
WHERE upper(spec_name) = 'POWER'
AND lumod_model = 'AMP'
AND dyn_value = '136'
AND ate_yield = 1
AND upper(proc_procedure_name) = 'FINAL TEST'
AND proc_report = 1
AND proc_status = 1
ORDER BY ate_serial, dyn_value
目前的情况是,我们并不知道你的表,你的数据也正是您想要查询做什么。请尝试制作一个简单的测试用例,足以证明您希望实现的目标(当然,只需要2或3个连接来演示您的场景?)以及相应的输入和预期输出数据。 – Boneist
谢谢骨科医生。我会用一个例子发布一个缩小的查询。 – user8091894
根据发布的查询,我们是否应该假设问题中引用为“ATE_DATA”的表实际上是“ATE_TEST_DATA”,而“TM_CONDITION_DYNAMIC”实际上是“TM_TEST_CONDITION_DYNAMIC”?如果是这样,请更正问题中提到的表名。谢谢。 –