我必须将四个桌子连在一起,遇到了麻烦。目前我的查询是返回数据,但不是我需要的数据。我认为我没有将所有四个表正确地连接在一起。我如何正确地加入桌子?谢谢。
贾斯汀
我需要将CXADMIN.RO_FAILURE_DTL RF
,CXADMIN.RO_HIST RH
,saadmin.sa_repair_part@elgsad rp
和saadmin.sa_code_group_task_dtl @ELGSAD cg
表连接在一起。
到目前为止,这是我的查询:
SELECT DISTINCT
RF.REPAIR_ORD,
RH.RECV_UNIT,
RH.RECV_SERIAL_NBR,
rf.created_date,
RP.FAULT_CODE,
RP.REPAIR_ACTION_CODE,
cg.task_code
FROM
CXADMIN.RO_FAILURE_DTL RF,
CXADMIN.RO_HIST RH,
saadmin.sa_repair_part@elgsad rp,
saadmin.sa_code_group_task_dtl @ELGSAD cg
WHERE
RF.REPAIR_ORD = RH.REPAIR_ORD
and Rp.REPAIR_ORD = cg.REPAIR_ORD
AND RF.FAILURE_CODE ='DISK'
AND RH.CURR_FACILITY_ID ='23'
AND RF.CREATED_DATE >'1-JUN-2010'
AND RF.CREATED_DATE < '1-dec-2010'
AND (CG.TASK_CODE ='PHMD'
OR CG.TASK_CODE ='PHSN'
OR CG.TASK_CODE ='CHMD'
OR CG.TASK_CODE ='CHSN')
最佳答案
您的代码本质上是在进行交叉联接,但看起来您想要做的是内部联接。
SELECT DISTINCT
RF.REPAIR_ORD,
RH.RECV_UNIT,
RH.RECV_SERIAL_NBR,
rf.created_date,
RP.FAULT_CODE,
RP.REPAIR_ACTION_CODE,
cg.task_code
FROM CXADMIN.RO_FAILURE_DTL RF
INNER JOIN CXADMIN.RO_HIST RH ON RF.REPAIR_ORD = RH.REPAIR_ORD
INNER JOIN saadmin.sa_repair_part@elgsad rp ON RF.REPAIR_ORD = rp.REPAIR_ORD
INNER JOIN saadmin.sa_code_group_task_dtl @ELGSAD cg ON RF.REPAIR_ORD = cg.REPAIR_ORD
WHERE
AND RF.FAILURE_CODE ='DISK'
AND RH.CURR_FACILITY_ID ='23'
AND RF.CREATED_DATE >'1-JUN-2010'
AND RF.CREATED_DATE < '1-dec-2010'
AND (CG.TASK_CODE ='PHMD'
OR CG.TASK_CODE ='PHSN'
OR CG.TASK_CODE ='CHMD'
OR CG.TASK_CODE ='CHSN')