서로 다른 테이블에서 2 개의 SQL 쿼리 결합

Lior Bitton

의사와 과거 약속이 포함 된 약속 데이터베이스가 있습니다. 사용자가 의사와의 약속을 잡으려고 할 때 레지던트를 선택하면 그 레지던트에 따라 의사에게 표시됩니다. 이제 까다로워지는 부분 :

의사는 과거 약속 순서대로 표시됩니다. 즉, 과거에 두 명의 심장 전문의를 방문했다면 마지막으로 예약 한 의사가 먼저 표시되고, 다른 한 명은 그다음에, 그 다음에는 모두 표시됩니다. 내가 약속 한 적이없는 심장 전문의.

이를 위해 심장 전문의와의 과거 약속을 찾아 날짜별로 내림차순으로 정렬 한 다음 모든 의사에게 가서 목록의 맨 아래에 다른 약속을 추가해야합니다.

이 쿼리를 시도하고 있습니다.

(
select distinct pastappointments.doctorID from pastappointments where
     pastappointments.insuredID = 1  and pastappointments.residency='cardio'
order by pastappointments.appTime desc
)
union (
select employees.employeeID from employees where  
employees.Residency='cardio'  and employees.employeeID not in (
select distinct pastappointments.doctorID from pastappointments where  
pastappointments.insuredID = 1  and pastappointments.residency='cardio'
))

내가 가진 문제는 주로 통합 명령 위의 첫 번째 쿼리를 실행할 때 괄호없이 올바른 순서를 얻습니다. 괄호가 쿼리 결과가 잘못된 것으로 변경되면.

MySQL을 사용하고 있습니다.

두 개의 다른 쿼리가 아닌 하나의 쿼리를 사용하여이 작업을 수행하고 싶지만 필요한 내림차순을 잃지 않고는 그렇게 할 방법을 찾을 수없는 것 같습니다.

고든 리노 프

특정 순서로 결과를 얻으려면 order by가장 바깥 쪽 쿼리 에 지정해야 합니다.

MySQL은,이입니다 union . 중복을 제거하는 오버 헤드를 명시 적으로 원하지 않는 한 union all대신을 강력히 권장 합니다 union.

(select pa.doctorID, max(pa.appTime) as last_apptime
 from pastappointments pa
 where pa.insuredID = 1 and pa.residency = 'cardio'
 group by pa.doctorID
) union all
(select e.employeeID, NULL as last_apptime
 from employees e
 where e.Residency = 'cardio' and
       e.employeeID not in (select pa.doctorID
                            from pastappointments pa
                            where pa.insuredID = 1 and       
                                  pa.residency = 'cardio'
                           )
)
order by (last_apptime is not null) desc, last_apptime desc;

두 개의 열을 반환합니다. 하나의 열을 원하면 하위 쿼리를 사용하십시오.

select t.doctorID
from (<above query without orderby) t
order by (last_apptime is not null) desc, last_apptime desc;

또한 group by첫 번째 쿼리에서의 사용에 주목해야 합니다. 이것은 정확한 마지막 약속 시간을 얻기 위해 필요합니다.

그리고 모든 의사가 직원이라고 가정하면 다음과 같이 훨씬 단순화 할 수 있습니다.

 select e.employeeID
 from employees e left join
      (select pa.doctorID, max(apptime) as last_apptime
       from pastappointments pa
       where pa.insuredID = 1 and pa.residency = 'cardio'
       group by pa.doctorId
      ) pa
      on e.EmployeeId = pa.DoctorId
 where e.Residency = 'cardio' -- or pa.doctorId is not null
 order by (last_apptime is not null) desc, last_apptime;

이것은 또한한다고 가정 e.Residency과 동일합니다 pa.residency. 그렇지 않은 경우 or조건이 필요합니다.

이것은 쿼리를 작성하는보다 합리적인 방법입니다 (모든 의사가 직원이라고 가정).

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 테이블에서 2 개의 SQL 쿼리 조인

분류에서Dev

SQL은 2 개의 쿼리를 2 개의 쿼리가 서로 다른 데이터베이스의 쿼리로 결합합니다.

분류에서Dev

SQL의 다른 테이블에서 2 개의 필드를 1로 병합

분류에서Dev

두 개의 다른 테이블에서 합계 쿼리

분류에서Dev

sqlite에서 2 개의 다른 테이블을 결합

분류에서Dev

공통 열이있는 2 개의 테이블에서 결과를 얻으려면 단일 SQL 쿼리가 필요합니다.

분류에서Dev

다른 테이블에서이 개 기록에 각각 연결되어 하나 개의 테이블에서 반환 레코드를 SQL 쿼리

분류에서Dev

테이블 1에서 2 개의 값을 가져오고 테이블 2에서 가능한 모든 옵션을 결합하는 SQL 쿼리

분류에서Dev

두 개의 서로 다른 결합 쿼리 출력 결합

분류에서Dev

SQL Server : 동일한 결과의 다른 2 개 테이블에서 선택

분류에서Dev

SQL은 2 개의 쿼리에서 집계 된 결과를 생성합니다.

분류에서Dev

while 루프 내부 쿼리는 2 개의 테이블에서 결과를 반복합니다.

분류에서Dev

차이 테이블에서 2 개의 쿼리를 결합하는 방법

분류에서Dev

2 개의 테이블에서 SQL 쿼리. 선택 및 검색

분류에서Dev

Oracle SQL은 테이블을 쿼리하고 결과에 따라 다른 테이블에서 삭제합니다.

분류에서Dev

하나의 테이블에서 두 개의 다른 쿼리 결과를 결합하는 방법 mysql

분류에서Dev

쿼리 최적화-SQL에서 효율적으로 일대 다 관계 테이블의 결과 조합

분류에서Dev

SQL 쿼리 : 하나의 결합 테이블 INSERT에 의해 다른 결합 테이블에 연결된 행

분류에서Dev

동일한 테이블이지만 다른 WHERE 절에서 두 개의 SELECT 쿼리 결합

분류에서Dev

PostgreSQL에서 조건이 다른 동일한 테이블에 두 개 이상의 서로 다른 SELECT 쿼리 결합

분류에서Dev

SQL에서 다른 복잡한 테이블의 열 결합

분류에서Dev

SQL : 2 개의 다른 테이블에서 SUM 빼기

분류에서Dev

2 개의 다른 테이블에서 SQL 선택

분류에서Dev

SQL Server, 다른 테이블의 2 개 열에서 선택

분류에서Dev

SQL Server, 다른 테이블의 2 개 열에서 선택

분류에서Dev

두 개의 서로 다른 쿼리를 결합하는 방법?

분류에서Dev

SQL에서 서로 다른 두 테이블의 두 필드 결합

분류에서Dev

2 개의 서로 다른 테이블을 조인하는 LINQ 쿼리

분류에서Dev

html 테이블에서 2 개의 서로 다른 소스의 데이터를 결합하는 레일

Related 관련 기사

  1. 1

    다른 테이블에서 2 개의 SQL 쿼리 조인

  2. 2

    SQL은 2 개의 쿼리를 2 개의 쿼리가 서로 다른 데이터베이스의 쿼리로 결합합니다.

  3. 3

    SQL의 다른 테이블에서 2 개의 필드를 1로 병합

  4. 4

    두 개의 다른 테이블에서 합계 쿼리

  5. 5

    sqlite에서 2 개의 다른 테이블을 결합

  6. 6

    공통 열이있는 2 개의 테이블에서 결과를 얻으려면 단일 SQL 쿼리가 필요합니다.

  7. 7

    다른 테이블에서이 개 기록에 각각 연결되어 하나 개의 테이블에서 반환 레코드를 SQL 쿼리

  8. 8

    테이블 1에서 2 개의 값을 가져오고 테이블 2에서 가능한 모든 옵션을 결합하는 SQL 쿼리

  9. 9

    두 개의 서로 다른 결합 쿼리 출력 결합

  10. 10

    SQL Server : 동일한 결과의 다른 2 개 테이블에서 선택

  11. 11

    SQL은 2 개의 쿼리에서 집계 된 결과를 생성합니다.

  12. 12

    while 루프 내부 쿼리는 2 개의 테이블에서 결과를 반복합니다.

  13. 13

    차이 테이블에서 2 개의 쿼리를 결합하는 방법

  14. 14

    2 개의 테이블에서 SQL 쿼리. 선택 및 검색

  15. 15

    Oracle SQL은 테이블을 쿼리하고 결과에 따라 다른 테이블에서 삭제합니다.

  16. 16

    하나의 테이블에서 두 개의 다른 쿼리 결과를 결합하는 방법 mysql

  17. 17

    쿼리 최적화-SQL에서 효율적으로 일대 다 관계 테이블의 결과 조합

  18. 18

    SQL 쿼리 : 하나의 결합 테이블 INSERT에 의해 다른 결합 테이블에 연결된 행

  19. 19

    동일한 테이블이지만 다른 WHERE 절에서 두 개의 SELECT 쿼리 결합

  20. 20

    PostgreSQL에서 조건이 다른 동일한 테이블에 두 개 이상의 서로 다른 SELECT 쿼리 결합

  21. 21

    SQL에서 다른 복잡한 테이블의 열 결합

  22. 22

    SQL : 2 개의 다른 테이블에서 SUM 빼기

  23. 23

    2 개의 다른 테이블에서 SQL 선택

  24. 24

    SQL Server, 다른 테이블의 2 개 열에서 선택

  25. 25

    SQL Server, 다른 테이블의 2 개 열에서 선택

  26. 26

    두 개의 서로 다른 쿼리를 결합하는 방법?

  27. 27

    SQL에서 서로 다른 두 테이블의 두 필드 결합

  28. 28

    2 개의 서로 다른 테이블을 조인하는 LINQ 쿼리

  29. 29

    html 테이블에서 2 개의 서로 다른 소스의 데이터를 결합하는 레일

뜨겁다태그

보관