2016-09-14 4 views
1

표 A [환자] 갖는 컬럼 [PATID], [FIRSTVISITDATE]SQL 쿼리 도움말 (아마도 사용 JOIN?)

표 B [APPT] 갖는 컬럼 [APPTID], [PATID], [CREATEDATE]

표 C [주] 열 [NOTEID], [NOTETEXT]

표 D [PROCS]가 열을 갖는다 PROCID], [PATID]

표 E [CHARGE]를 갖는 컬럼 [CHARGEID]을 [갖는다 AMOUNT]

나는 CHARGE

간단히 말하자면 내가 필요로하는 PATIENT.FIRSTVISITDATE에 NOTE.NOTETEXT은 '텍스트'와 APPT.CREATEDATE이있는 '텍스트'를 포함하는 환자에 대한 APPT 중 하나를 포함하는 모든 환자에 대한 PATID에 의해 (금액) =

CHARGE.CHARGEID = PROC : 그들은 자신의 노트에 '텍스트'그 '텍스트'로 약속과 약속이있는 경우 환자에 대한 요금 합계를 사무실에 처음 방문

다른 핵심 포인트였다 .PROCID

NOTE.NOTEID = APPT.APPTID

'텍스트'첫 약속 노트에 포함 된 경우 SQL 내 제한된 지식으로

나는 관계없이 모든 환자에 대해 요약 할 수 있었고, 그것을 위해 내가 사용 :

select (SUM(AMOUNT)) as 'Cash Payments' from CHARGE where CHARGEID in 
    (select PROCID from PROC where PATID in 
    (select PATID from APPT where APPTID in 
     (select NOTEID from NOTE where NOTETEXT like '%text%'))) 
+0

죄송합니다. 필사적으로 * 필요한 것은 SQL 자습서를 찾고이를 통해 작업하는 것입니다. 작성한 쿼리로 원하는 결과를 얻을 수 있지만, 데이터 행이 몇 줄 이상일 경우 성능은 에베레스트 산을 등반하는 거북이보다 느려질 것입니다. –

+1

나는 왜 내가 여기에 게시했는지 SQL에 대해 거의 알지 못한다. 그러나이 사이트가 대답이 아니면 미안하다. 나는 이것이 사용 된 것이라고 생각했다. –

+0

그것은 대답을위한 것이지만,이 질문에 단순히 답하는 것이 당신에게 도움이되지는 않는다. 당신에게 질문을 작성한 사람보다 더 많은 교육이 필요합니다. 이것은 우리가 기본을 가르치고 장기적인 지침을 제공하는 자습서 사이트가 아닙니다. –

답변

0

당신은 그룹에 GROUP BY 절을 사용할 수 있습니다 환자가 AMOUNT. 노트에 text 및 해당 조건의 테이블을 조인하는 내부 쿼리를 사용하여 FIRSTVISITDATE = CREATEDATE으로 환자를 필터링 할 수 있습니다.

다음 쿼리는 테스트하지 않았지만 요청한대로 수행해야합니다.

SELECT pa.PATIENT, SUM(c.AMOUNT) AS 'Cash Payments' 
FROM PATIENT pa 
INNER JOIN PROCS pr 
ON pa.PATID = pr.PATID 
INNER JOIN CHARGE c 
ON pr.PROCID = c.CHARGEID 
WHERE pa.PATIENT IN (
     SELECT pa.PATIENT 
     FROM PATIENT pa 
     INNER JOIN APPT a 
     ON pa.PATID = a.PATID 
     AND pa.FIRSTVISITDATE = a.CREATEDATE 
     INNER JOIN NOTE n 
     ON a.APPTID = n.NOTEID 
     WHERE n.NOTETEXT LIKE '%text%' 
) 
GROUP BY pa.PATIENT;