왼쪽 조인에 일치하는 행이 없을 때 모든 행을 가져 오는 SQL 쿼리

Dev_vikram

다음과 같은 테이블 구조가 있습니다.

person (pid, pname)
personSamples(sid,pid,sampleName)
groups(gid,groupName)
groupPersons(gpid,gid,pid)
grouppersonSamples(gpsid,gid,sid)

한 사람이 그룹 (즉, groupPersons테이블) 에 추가 될 때마다 , 나는 테이블에 몇 가지 선택된 사람 샘플을 추가 grouppersonSamples합니다.

요구 사항은 행을 삽입하지 않으면 주어진 사람과 그룹에 대해 grouppersonSamples모두 선택하는 것 personSamples입니다.

내가해야 할 일은 조인 하고 grouppersonSamples일치하는 행이 없는지 확인한 grouppersonSamples다음 다른 쿼리를 실행 personSamples하여 주어진 pid에 대해 모두 선택하는 것 입니다.

모든 것을 단일 쿼리로 가져올 수있는 방법이 있습니까?

shailesh88

다음 쿼리는 grouppersonSamples 테이블에 아직없는 특정 person (pid)에 대한 group-person-samples (gid, sid)를 제공합니다.

주어진 사람의 pid가 3이라고 가정합니다. 나는이 사람이 추가 된 그룹의 gid를 고려하지 않았습니다. 특정 그룹을 고려하려면 pid = 3 조건과 유사한 다음 쿼리에 gid 필터를 추가하십시오.

select T1.gid, T1.sid from
    (select gid, sid from groupPersons, personSamples where groupPersons.pid = personSamples.pid and groupPersons.pid = 3) as T1
LEFT JOIN
    (select grouppersonSamples.gid, grouppersonSamples.sid from personSamples, groupPersons, grouppersonSamples where personSamples.pid = 3 and personSamples.pid = groupPersons.pid and grouppersonSamples.gid = groupPersons.gid and grouppersonSamples.sid = personSamples.sid) as T2
ON T1.gid = T2.gid and T1.sid = T2.sid where T2.gid IS NULL;

첫 번째 쿼리는 주어진 사람 (예 : pid = 3)에 대해 가능한 모든 group-person-samples (gid, sid)를 추출하고 두 번째 쿼리는 주어진 person에 대한 grouppersonSamples 테이블에있는 모든 group-person-samples (gid, sid)를 추출합니다.

그런 다음 LEFT JOIN은 MINUS 연산으로 작동하고 grouppersonSamples 테이블에 아직 존재하지 않는 주어진 사람에 대한 group-person-samples (gid, sid)를 제공합니다.

또한 다음과 같이 insert 문에서 위의 쿼리를 사용할 수 있습니다.

insert into grouppersonSamples(gid, sid) (<above query>);

추신 : Mysql이 MINUS 연산자를 지원하지 않기 때문에 LEFT JOIN을 사용하여 마이너스 연산을 수행했습니다. DBS가 지원하는 경우 MINUS 연산자를 직접 사용할 수 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL Server의 오른쪽 테이블에없는 왼쪽 테이블에서 행을 가져 오는 데 사용하려는 조인

분류에서Dev

일치하지 않는 행을 포함하여 왼쪽에서 모든 행을 가져오고 오른쪽에서 모든 행을 가져 오기 위해 테이블 결합

분류에서Dev

왼쪽 조인을 수행하여 오른쪽 테이블의 조건에 관계없이 왼쪽 테이블의 모든 레코드를 가져 오는 방법

분류에서Dev

왼쪽 조인을 수행 할 때 오른쪽 테이블에 모든 결 측값이있는 레코드에 플래그 지정

분류에서Dev

SQL 쿼리 (BigQuery)에서 UTC tz가있는 열에서 CreatedDatetime이 오늘 모스크바 tz 인 모든 행을 가져 오는 방법은 무엇입니까?

분류에서Dev

오른쪽 테이블에 일치하는 레코드가없는 경우 Jsonb_object_keys ()는 왼쪽 조인의 행을 반환하지 않습니다.

분류에서Dev

이 열을 조인과 오른쪽 테이블의 배열은 왼쪽 테이블 행에 refrenced이 열 왼쪽 당 하나 개의 행을 얻을 쿼리

분류에서Dev

조인을 사용하여 2 개의 행 데이터를 단일 행으로 가져 오는 SQL 쿼리

분류에서Dev

SQL 쿼리-다른 열의 값을 기반으로 열을 만든 다음 열을 사용하여 왼쪽 조인을 수행하여 다른 값을 가져 오려고합니다.

분류에서Dev

한 위치에서 모든 프로젝트에서 일하는 직원 목록을 가져 오는 SQL 쿼리

분류에서Dev

여러 행 값을 가져오고 단일 행에 에코하는 SQL 쿼리

분류에서Dev

SUM (column)이 X보다 클 때까지 모든 행을 가져 오는 MySQL 쿼리

분류에서Dev

SQL Server 2012에 일치하는 열이 없을 때 첫 번째 테이블에서 모든 열을 가져 오는 방법

분류에서Dev

동일한 열 ID를 전달할 때 열이 다른 테이블 열과 일치하지 않아야하는 테이블 행을 가져 오는 SQL 쿼리

분류에서Dev

왼쪽 조인을 포함하는 SQL 쿼리 최적화

분류에서Dev

Snowflake의 왼쪽 외부 조인 중에 모든 값 (일치하지 않는 값 포함)을 가져 오는 방법은 무엇입니까?

분류에서Dev

Linq 쿼리 구문 (또는 유창함)에서 이중 왼쪽 외부 조인을 수행하는 방법

분류에서Dev

MySQL 왼쪽 조인 쿼리는 null 값을 가진 행을 반환하지 않습니다.

분류에서Dev

ID가 같을 때 모든 데이터를 가져 오는 쿼리

분류에서Dev

동일한 값을 가진 행을 조인하는 SQL 쿼리

분류에서Dev

이 SQL을 서브 쿼리없이 왼쪽 조인으로 변환하는 방법?

분류에서Dev

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

분류에서Dev

왼쪽 조인을 사용하여 마스터 테이블에서 모든 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

동일한 열 값을 가진 모든 행을 반환하는 SQL 쿼리

분류에서Dev

이 SQL 쿼리에 대한 왼쪽 외부 조인을 작성하는 방법은 무엇입니까?

분류에서Dev

일부 열 값에 항목이없는 테이블에서 여러 번 나오는 모든 항목을 가져 오는 MS SQL 쿼리

분류에서Dev

모든 행에없는 속성을 가진 사용자에 대한 데이터 가져 오기 -sql

분류에서Dev

추가 절이있는 MySQL 왼쪽 조인은 일치하지 않는 행을 반환합니다.

분류에서Dev

테이블을 조인하여 SQL 쿼리의 첫 번째 테이블에서 모든 레코드를 가져 오는 방법

Related 관련 기사

  1. 1

    SQL Server의 오른쪽 테이블에없는 왼쪽 테이블에서 행을 가져 오는 데 사용하려는 조인

  2. 2

    일치하지 않는 행을 포함하여 왼쪽에서 모든 행을 가져오고 오른쪽에서 모든 행을 가져 오기 위해 테이블 결합

  3. 3

    왼쪽 조인을 수행하여 오른쪽 테이블의 조건에 관계없이 왼쪽 테이블의 모든 레코드를 가져 오는 방법

  4. 4

    왼쪽 조인을 수행 할 때 오른쪽 테이블에 모든 결 측값이있는 레코드에 플래그 지정

  5. 5

    SQL 쿼리 (BigQuery)에서 UTC tz가있는 열에서 CreatedDatetime이 오늘 모스크바 tz 인 모든 행을 가져 오는 방법은 무엇입니까?

  6. 6

    오른쪽 테이블에 일치하는 레코드가없는 경우 Jsonb_object_keys ()는 왼쪽 조인의 행을 반환하지 않습니다.

  7. 7

    이 열을 조인과 오른쪽 테이블의 배열은 왼쪽 테이블 행에 refrenced이 열 왼쪽 당 하나 개의 행을 얻을 쿼리

  8. 8

    조인을 사용하여 2 개의 행 데이터를 단일 행으로 가져 오는 SQL 쿼리

  9. 9

    SQL 쿼리-다른 열의 값을 기반으로 열을 만든 다음 열을 사용하여 왼쪽 조인을 수행하여 다른 값을 가져 오려고합니다.

  10. 10

    한 위치에서 모든 프로젝트에서 일하는 직원 목록을 가져 오는 SQL 쿼리

  11. 11

    여러 행 값을 가져오고 단일 행에 에코하는 SQL 쿼리

  12. 12

    SUM (column)이 X보다 클 때까지 모든 행을 가져 오는 MySQL 쿼리

  13. 13

    SQL Server 2012에 일치하는 열이 없을 때 첫 번째 테이블에서 모든 열을 가져 오는 방법

  14. 14

    동일한 열 ID를 전달할 때 열이 다른 테이블 열과 일치하지 않아야하는 테이블 행을 가져 오는 SQL 쿼리

  15. 15

    왼쪽 조인을 포함하는 SQL 쿼리 최적화

  16. 16

    Snowflake의 왼쪽 외부 조인 중에 모든 값 (일치하지 않는 값 포함)을 가져 오는 방법은 무엇입니까?

  17. 17

    Linq 쿼리 구문 (또는 유창함)에서 이중 왼쪽 외부 조인을 수행하는 방법

  18. 18

    MySQL 왼쪽 조인 쿼리는 null 값을 가진 행을 반환하지 않습니다.

  19. 19

    ID가 같을 때 모든 데이터를 가져 오는 쿼리

  20. 20

    동일한 값을 가진 행을 조인하는 SQL 쿼리

  21. 21

    이 SQL을 서브 쿼리없이 왼쪽 조인으로 변환하는 방법?

  22. 22

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

  23. 23

    왼쪽 조인을 사용하여 마스터 테이블에서 모든 데이터를 가져 오는 방법은 무엇입니까?

  24. 24

    동일한 열 값을 가진 모든 행을 반환하는 SQL 쿼리

  25. 25

    이 SQL 쿼리에 대한 왼쪽 외부 조인을 작성하는 방법은 무엇입니까?

  26. 26

    일부 열 값에 항목이없는 테이블에서 여러 번 나오는 모든 항목을 가져 오는 MS SQL 쿼리

  27. 27

    모든 행에없는 속성을 가진 사용자에 대한 데이터 가져 오기 -sql

  28. 28

    추가 절이있는 MySQL 왼쪽 조인은 일치하지 않는 행을 반환합니다.

  29. 29

    테이블을 조인하여 SQL 쿼리의 첫 번째 테이블에서 모든 레코드를 가져 오는 방법

뜨겁다태그

보관