두 테이블을 사용한 내부 조인 및 다른 테이블과 결과를 왼쪽 조인

AkshayKriti

Inner Join두 테이블 을 사용 하여 세 테이블에서 데이터를 쿼리 Left Join하고 다른 테이블을 사용하여 결과 를 쿼리하고 싶습니다 .

내가 여기서 뭘하려고하면에있는 모든 레코드를 가져올 것입니다 UserTableActivity아이템이 활동 완료 테이블에 또는 다른 해당 항목에 0의 값을 만들 경우 레코드의 수를 증가시킨다.

그리고를 계산 ItemCompleted하고 ItemRemainingActivityCompletion 및 활동 테이블에서.

원하는 출력 :

ActivityDuration |  Name    |ItemCompleted |ItemRemaining
-----------------|----------|--------------|-------------
Week 7           |  A B     |   2          |    3
Week 7           |  A C     |   1          |    4
Week 7           |  A C A C |   0          |    5
Week 7           |  A C B   |   1          |    4
Week 7           |  A C C   |   2          |    3
Week 7           |  A C D   |   2          |    3
Week 7           |  A C E   |   2          |    3
Week 7           |  A C F   |   2          |    3
Week 8           |  A B     |   0          |    3
Week 8           |  A C     |   0          |    3
Week 8           |  A C A C |   0          |    3
Week 8           |  A C B   |   1          |    2
Week 8           |  A C C   |   2          |    0
Week 8           |  A C D   |   0          |    3
Week 8           |  A C E   |   0          |    3   
Week 8           |  A C F   |   0          |    3
Week 9           |  A B     |   3          |    0
Week 9           |  A C     |   1          |    2
Week 9           |  A C A C |   1          |    2
Week 9           |  A C B   |   0          |    3
Week 9           |  A C C   |   0          |    3
Week 9           |  A C D   |   0          |    3
Week 9           |  A C E   |   0          |    3
Week 9           |  A C F   |   0          |    3
                             

샘플 기록 :

create table UserTable (
  Id integer not null,
  Name varchar(12) not null
);

insert into UserTable  values (1,  'A B');
insert into UserTable  values (2,  'A C');
insert into UserTable  values (3,  'A C A C');
insert into UserTable  values (4,  'A C C');
insert into UserTable  values (5,  'A C B');
insert into UserTable  values (6,  'A C C');
insert into UserTable  values (7,  'A C D');
insert into UserTable  values (8,  'A C E');
insert into UserTable  values (9,  'A C F');


create table Activity (
  Id integer not null,
  Activity varchar(12) not null,
  ActivityDuration varchar(12) not null,
);

insert into Activity  values (1, 'Videos', 'Week 9');
insert into Activity  values (2, 'Text',   'Week 9');
insert into Activity  values (3, 'Page',   'Week 9');
insert into Activity  values (6, 'Chat',   'Week 8');
insert into Activity  values (11, 'Image', 'Week 8');
insert into Activity  values (12, 'Chat',  'Week 8');
insert into Activity  values (13, 'Chat',  'Week 7');
insert into Activity  values (17, 'Vidoes','Week 7');
insert into Activity  values (18, 'Vidoes','Week 7');
insert into Activity  values (19, 'Chat',  'Week 7');
insert into Activity  values (19, 'Chat',  'Week 7');


create table ActivityCompletion (
  Id integer not null,
  UserId integer not null,
  ActivityId integer not null,
);
insert into ActivityCompletion  values (1,  1 , 1); --A B --Week 9
insert into ActivityCompletion  values (2,  1 , 2); --A B --Week 9 
insert into ActivityCompletion  values (3,  1 , 3); --A B --Week 9
insert into ActivityCompletion  values (4,  2 , 2); --A C --Week 9
insert into ActivityCompletion  values (5,  3 , 2); --A C A C --Week 9
insert into ActivityCompletion  values (6,  4 ,13); --A C C --Week 7
insert into ActivityCompletion  values (7,  7 ,13); --A C D --Week 7
insert into ActivityCompletion  values (7,  7 ,13); --A C D --Week 7
insert into ActivityCompletion  values (7,  8 ,13); --A C E --Week 7
insert into ActivityCompletion  values (7,  8 ,18); --A C E --Week 7
insert into ActivityCompletion  values (10, 9 ,18); --A C F--Week 7
insert into ActivityCompletion  values (11, 9 ,13); --A C F--Week 7
insert into ActivityCompletion  values (12, 4 ,13); --A C C--Week 7
insert into ActivityCompletion  values (13, 5 ,18); --A C B--Week 7 
insert into ActivityCompletion  values (14, 5 ,11); --A C B--Week 8
insert into ActivityCompletion  values (15, 2 ,13); --A C --Week 7
insert into ActivityCompletion  values (16, 1 ,13); --A B --Week 7
insert into ActivityCompletion  values (17, 1 ,13); --A B --Week 7
insert into ActivityCompletion  values (18, 6 ,11); --A C C --Week 8
insert into ActivityCompletion  values (19, 6 ,11); --A C C--Week 8

내가 시도한 것은 :

SELECT AT.ActivityDuration,  UA.Name, COUNT(AT.Activity) ItemCompleted
FROM dbo.Activity AT 
LEFT JOIN  (select UT.Name, UT.Id, AC.ActivityId from UserTable UT
  INNER JOIN ActivityCompletion AC ON UT.Id = AC.UserId
) UA ON UA.ActivityId = AT.Id
GROUP BY AT.ActivityDuration, UA.Name
ORDER BY AT.ActivityDuration

이 쿼리가 적절한 값을 반환하지 않는 이유를 찾을 수 없습니다. 내가 놓친 곳은 어디입니까?

https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=8b5439f8d627c25596ed1cfc767837ef

GMB

나는 그것이 사용자와 활동 사이의 자체 조인이라고 생각 left join하고 완성 된 활동을 가져오고 마지막으로 집계합니다.

select a.activityDuration , u.name, count(ac.id) itemCompleted, count(*) - count(ac.id) itemRemaining
from usertable u
cross join activity a
left join activityCompletion ac 
    on  ac.userid = u.id
    and ac.activtyid = a.activtyid
group by u.id, u.name, a.activityDuration 

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내부 조인 제한 왼쪽 테이블 결과 제한 1

분류에서Dev

왼쪽 조인의 결과를 다른 테이블에 조인

분류에서Dev

테이블 데이터의 일부에서 조건이 다른 두 테이블에 대한 왼쪽 조인

분류에서Dev

"내부 조인"절을 사용하여 두 테이블을 조인 한 다음 여러 "왼쪽 조인"절을 따르는 방법이 있습니까?

분류에서Dev

왼쪽 조인 및 그룹화 기준을 사용하여 동일한 테이블의 두 쿼리 결합

분류에서Dev

왼쪽 외부 조인 및 on 절을 사용하여 공통 열이있는 두 개의 다른 테이블에서 데이터 검색

분류에서Dev

SQL을 사용하는 Access의 5 개 테이블에 대한 내부 조인 및 왼쪽 조인

분류에서Dev

왼쪽 외부 조인을 사용하여 두 테이블을 조인하고 오른쪽 테이블 열을 기반으로 새 열 값 채우기

분류에서Dev

동일한 쿼리에서 두 테이블을 조인하는 MySQL. 내부 조인 또는 왼쪽 조인?

분류에서Dev

mysql 왼쪽 조인 및 내부 조인 3 테이블

분류에서Dev

왼쪽 조인이있는 두 테이블에 대한 mysql 쿼리-잘못된 결과를 얻음

분류에서Dev

왼쪽 조인을 사용한 MySql 다중 테이블 쿼리

분류에서Dev

내부 조인과 두 개의 앞쪽 키를 사용하여 테이블 데이터 쿼리

분류에서Dev

세 개의 테이블과 왼쪽 조인 / 내부 조인을 사용하여 AND를 사용할 수 있습니까?

분류에서Dev

where 절을 사용한 SQL Left Outer 조인은 왼쪽 외부 조인의 결과를 줄입니다.

분류에서Dev

왼쪽 조인 테이블 사용 및 조건 선택

분류에서Dev

BigQuery에서 다른 두 사람과 테이블 조인

분류에서Dev

왼쪽 조인 다른 테이블 및 개수

분류에서Dev

왼쪽 조인을 사용하여 두 개의 다른 테이블에 MySql 삽입

분류에서Dev

Spark SQL을 사용하여 동일한 테이블의 두 결과를 조인

분류에서Dev

오른쪽 테이블에서 레코드를 제외 할 위치를 사용하는 왼쪽 외부 조인

분류에서Dev

왼쪽 조인 및 두 번째 테이블의 위치

분류에서Dev

두 테이블 MYSQL에서 왼쪽 조인 및 SUM

분류에서Dev

내부 조인? 사용자 ID를 다른 사용자 ID와 결합하는 두 테이블

분류에서Dev

왼쪽 조인을 사용하고 null 결과를 방지하는 SQL 쿼리 (데이터 테이블)

분류에서Dev

결과를 줄이기 위해 내부 조인을 사용합니다. join 문 이외의 다른 곳에서 새 테이블을 참조해야합니까?

분류에서Dev

다른 테이블과의 내부 조인에 대한 업데이트

분류에서Dev

조인-두 테이블에서 필터를 사용하여 왼쪽 조인, 일치하지 않으면 0을 반환합니다.

분류에서Dev

SQL 테이블 왼쪽 외부 조인 결과 그룹화 기준

Related 관련 기사

  1. 1

    내부 조인 제한 왼쪽 테이블 결과 제한 1

  2. 2

    왼쪽 조인의 결과를 다른 테이블에 조인

  3. 3

    테이블 데이터의 일부에서 조건이 다른 두 테이블에 대한 왼쪽 조인

  4. 4

    "내부 조인"절을 사용하여 두 테이블을 조인 한 다음 여러 "왼쪽 조인"절을 따르는 방법이 있습니까?

  5. 5

    왼쪽 조인 및 그룹화 기준을 사용하여 동일한 테이블의 두 쿼리 결합

  6. 6

    왼쪽 외부 조인 및 on 절을 사용하여 공통 열이있는 두 개의 다른 테이블에서 데이터 검색

  7. 7

    SQL을 사용하는 Access의 5 개 테이블에 대한 내부 조인 및 왼쪽 조인

  8. 8

    왼쪽 외부 조인을 사용하여 두 테이블을 조인하고 오른쪽 테이블 열을 기반으로 새 열 값 채우기

  9. 9

    동일한 쿼리에서 두 테이블을 조인하는 MySQL. 내부 조인 또는 왼쪽 조인?

  10. 10

    mysql 왼쪽 조인 및 내부 조인 3 테이블

  11. 11

    왼쪽 조인이있는 두 테이블에 대한 mysql 쿼리-잘못된 결과를 얻음

  12. 12

    왼쪽 조인을 사용한 MySql 다중 테이블 쿼리

  13. 13

    내부 조인과 두 개의 앞쪽 키를 사용하여 테이블 데이터 쿼리

  14. 14

    세 개의 테이블과 왼쪽 조인 / 내부 조인을 사용하여 AND를 사용할 수 있습니까?

  15. 15

    where 절을 사용한 SQL Left Outer 조인은 왼쪽 외부 조인의 결과를 줄입니다.

  16. 16

    왼쪽 조인 테이블 사용 및 조건 선택

  17. 17

    BigQuery에서 다른 두 사람과 테이블 조인

  18. 18

    왼쪽 조인 다른 테이블 및 개수

  19. 19

    왼쪽 조인을 사용하여 두 개의 다른 테이블에 MySql 삽입

  20. 20

    Spark SQL을 사용하여 동일한 테이블의 두 결과를 조인

  21. 21

    오른쪽 테이블에서 레코드를 제외 할 위치를 사용하는 왼쪽 외부 조인

  22. 22

    왼쪽 조인 및 두 번째 테이블의 위치

  23. 23

    두 테이블 MYSQL에서 왼쪽 조인 및 SUM

  24. 24

    내부 조인? 사용자 ID를 다른 사용자 ID와 결합하는 두 테이블

  25. 25

    왼쪽 조인을 사용하고 null 결과를 방지하는 SQL 쿼리 (데이터 테이블)

  26. 26

    결과를 줄이기 위해 내부 조인을 사용합니다. join 문 이외의 다른 곳에서 새 테이블을 참조해야합니까?

  27. 27

    다른 테이블과의 내부 조인에 대한 업데이트

  28. 28

    조인-두 테이블에서 필터를 사용하여 왼쪽 조인, 일치하지 않으면 0을 반환합니다.

  29. 29

    SQL 테이블 왼쪽 외부 조인 결과 그룹화 기준

뜨겁다태그

보관