이 테이블 중 하나의 고유 한 값에 대해 세 개의 테이블을 조인 할 수있는 조인 쿼리를 찾고 있습니다.세 개의 테이블에서 개수 (*)와 "조인"을 선택하십시오.
예상되는 데이터 (Workflow
, Message
및 Message_Workflow_Relation
)를 얻기 위해 필요한 테이블이 3 개 있습니다.
내 결과 (related_name
)에 연결된 Message
테이블의 status + one 필드로 그룹화 된 워크 플로 수를 확인하고 싶습니다. 관련 이름은 adapter
필드가 wf
과 같은 항목에서 가져와야하지만이 조건과 일치하는 메시지 레코드가 두 개 이상인 경우가 있습니다.이 경우 더 많은 데이터 세트가 실제로 포함 된 다음 더 많은 데이터 세트가됩니다.
나는 그것을 밖으로 분류 할 수 있어야한다고 확신하지만, 단지 작동시키지 않아야한다. 슬프게도 우리가 사용하는 제품의 주어진 스키마이므로 테이블 구조를 변경할 수 없습니다.
내 테이블 구조는 다음과 같습니다
워크 플로우 :
id | workflow_id | starttime | endtime | status
------------------------------------------------------
1 | 22 | 0 | 200 | OK
2 | 23 | 220 | 920 | ERROR
3 | 55 | 202 | 588 | OK
Message_Workflow_Relation :
id | message_id | workflow_id |
-------------------------------
1 | 122 | 22 |
2 | 235 | 22 |
3 | 456 | 22 |
4 | 982 | 22 |
5 | 444 | 23 |
6 | 445 | 23 |
7 | 585 | 55 |
8 | 738 | 55 |
9 | 399 | 55 |
메시지 :
id | message_id | starttime | endtime | adapter | related_name |
----------------------------------------------------------------
1 | 122 | 0 | 2335 | wf | workflow_1 |
2 | 235 | 222 | 1000 | other | other |
3 | 456 | 343 | 2330 | another | another |
4 | 982 | 222 | 2200 | wf | workflow_1 |
5 | 444 | 2223 | 3333 | wf | workflow_2 |
6 | 445 | 1123 | 1244 | manual | manual |
7 | 585 | 5555 | 5566 | wf | workflow_1 |
8 | 738 | 655 | 999 | wf | worfklow_1 |
9 | 399 | 6655 | 7732 | another | another |
는
이 다음과 같은 결과가 반환해야합니다 :
count(*) | related_name | status |
----------------------------------
2 | workflow_1 | OK |
1 | workflow_2 | ERROR |
나는이 다음 문에 붙어 있어요,하지만 나는 각 워크 플로우에 대한 adapter = wf unique
의 선택을 하는 방법을 잘 모르겠습니다 :
select distinct
count(*),
m.related_name,
w.status
from
workflow as w,
message as m,
msg_bpm_rel as rel
where rel.workflow_id = w.workflow_id
and rel.message_id = m.message_id
and m.adapter = 'PE'
group by m.related_name,w.status
이것은 나를 대신합니다 (2 대신에을 반환합니다) :
count(*) | related_name | status |
----------------------------------
4 | workflow_1 | OK |
1 | workflow_2 | ERROR |
어떻게하면이 문제를 해결할 수 있습니까?
도움을 주시면 감사하겠습니다.
나는 이미 당신에게 대답을했지만, 몇번이나 당신의 게시물을 읽고 또 내가 몇 가지 정보가 빠진 느낌을받습니다. workflow_1에 두 번만 존재하는 별개의 가치는 없으며 4 회 또는 1 회입니다. 그래서 나는 테이블을 놓치고있다. 셀 수있는 열은 정확히 무엇입니까? (카운트 (*)는 일반적으로 가입 할 때 특히 나쁜 생각입니다) –