programing

여러 테이블에서 하나의 쿼리에 여러 개의 완전한 조인

testmans 2023. 10. 7. 09:30
반응형

여러 테이블에서 하나의 쿼리에 여러 개의 완전한 조인

여러 개의 테이블이 있는 데이터베이스가 있습니다. 모든 테이블의 모든 내용을 하나의 쿼리로 보여주고 싶습니다(나중에 데이터베이스의 조사에 사용합니다).

데이터베이스 보기

테이블 두 개로 해봤습니다.

[SELECT 
    reception.num_courrier, reception.date_recep, reception.expediteur, reception.objet, 
    lect_prefet.date_lect_prefet, lect_prefet.instructions, lect_prefet.caractere 
FROM
    reception 
FULL JOIN 
    lect_prefet ON reception.num_courrier = lect_prefet.num_courrier][2]

그러나 오류를 반환합니다.

10.4.14-MariaDB 버전을 사용하고 있습니다.

전체 조인 쿼리 오류

하나의 방법은 여러 개를 사용합니다.left joins, 사용 가능한 모든 ID부터 시작합니다.

SELECT *
FROM (SELECT r.num_courrier
      FROM reception r
      UNION -- on purpose to remove duplicate 
      SELECT l.num_courrier 
      FROM lect_prefet l
     ) c LEFT JOIN
     reception r
     USING (num_courrier) LEFT JOIN
     lect_prefet l
     USING (num_courrier);

이 접근 방식은 동일한 키를 사용하여 더 많은 테이블로 쉽게 일반화할 수 있습니다.JOIN.

다음을 시도해 보십시오.

SELECT * FROM reception r
LEFT OUTER JOIN lect_prefet lp ON lp.num_courrier = r.num_courrier
LEFT OUTER JOIN lect_sg ls ON ls.num_courrier = r.num_courrier
LEFT OUTER JOIN ad ad ON ad.num_courrier = r.num_courrier
LEFT OUTER JOIN agt agt ON agt.num_courrier = r.num_courrier

만약 위의 내용이 통하지 않는다면, 다른 사람들이 라이브 스키마를 사용해 볼 수 있도록 SQLFiddle 예제를 제공해 주시면 좋겠습니다.

모두 감사합니다, 정말 도와주셔서 감사합니다, @Gordon Linoff[행 추가]의 답변에 따라 예상했던 대로입니다. 감사합니다.

    SELECT * FROM (
SELECT r.num_courrier FROM reception r UNION 
SELECT l.num_courrier FROM lect_prefet l UNION 
SELECT s.num_courrier FROM lect_sg s UNION 
SELECT g.num_courrier FROM agt g UNION 
SELECT d.num_courrier FROM ad d ) c 
LEFT JOIN reception r USING (num_courrier) 
LEFT JOIN lect_prefet l USING (num_courrier) 
LEFT JOIN lect_sg s USING (num_courrier) 
LEFT JOIN agt g USING (num_courrier) 
LEFT JOIN ad d USING (num_courrier); 

예상 답변

언급URL : https://stackoverflow.com/questions/67253477/multiple-full-joins-in-one-query-on-multiple-tables

반응형