복붙노트

[SQL] 어떻게 ID를 사용하여 여러 SQL 테이블을 가입 할 수 있습니까?

SQL

어떻게 ID를 사용하여 여러 SQL 테이블을 가입 할 수 있습니까?

내가 가입하고자하는 4 개 개의 테이블이있다. 다음과 같이 테이블 컬럼으로 구성되어 있습니다 :

TableA - aID | nameA | dID

TableB - bID | nameB | cID | aID

TableC - cID | nameC | date

TableD - dID | nameD

표 A부터 나는 테이블을 조인하는 방법을 이해하고 나부터, B를 사용하여 c를 해당 테이블에 대한 기본 키가 있습니다. 나는 테이블뿐만 아니라 TableA의에 상정 가입 할 수 있어야합니다. 다음은 첫 번째 테이블 A와 B를 조인 내 SQL 문은 다음 조인 C에 해당 :

SELECT TableA.*, TableB.*, TableC.* FROM (TableB INNER JOIN TableA
ON TableB.aID= TableA.aID)
INNER JOIN TableC ON(TableB.cID= Tablec.cID)
WHERE (DATE(TableC.date)=date(now())) 

나는 또 다른 D를 포함하는, 가입 추가하려고하면, 나는 '건의'는 알 수 없다는 오류가 발생합니다 :

 SELECT TableA.*, TableB.*, TableC.*, TableD.* FROM (TableB INNER JOIN TableA
    ON TableB.aID= TableA.aID)
    INNER JOIN TableC ON(TableB.cID= Tablec.cID)
    INNER JOIN TableA ta ON(ta.dID= TableD.dID)
    WHERE (DATE(TableC.date)=date(now())) 

해결법

  1. ==============================

    1.이 같은 더 뭔가를 원하는 :

    이 같은 더 뭔가를 원하는 :

    SELECT TableA.*, TableB.*, TableC.*, TableD.*
    FROM TableA
        JOIN TableB
            ON TableB.aID = TableA.aID
        JOIN TableC
            ON TableC.cID = TableB.cID
        JOIN TableD
            ON TableD.dID = TableA.dID
    WHERE DATE(TableC.date)=date(now()) 
    

    당신의 예에서, 당신은 실제로 건의 포함되지 않습니다. 모두 당신이해야 할 또 다른 당신이 전에했던 것처럼 조인을 수행합니다.

    참고 사항 : 당신은 그들이 정말 당신이 그들을 있었다 대부분의 경우 필요하지 않습니다, 나는 당신의 괄호의 대부분을 제거 통지하고, 코드를 읽으려고하는 경우에만 혼란을 추가합니다. 적절한 중첩이 코드를 읽을 수 밖으로 분리 할 수있는 가장 좋은 방법입니다.

  2. ==============================

    2.

    SELECT 
        a.nameA, /* TableA.nameA */
        d.nameD /* TableD.nameD */
    FROM TableA a 
        INNER JOIN TableB b on b.aID = a.aID 
        INNER JOIN TableC c on c.cID = b.cID 
        INNER JOIN TableD d on d.dID = a.dID 
    WHERE DATE(c.`date`) = CURDATE()
    
  3. ==============================

    3.당신은 단지 테이블 중 하나에서 건의 필드 (DID)를 선택, 상정 가입하지 않았습니다.

    당신은 단지 테이블 중 하나에서 건의 필드 (DID)를 선택, 상정 가입하지 않았습니다.

  4. ==============================

    4.

    CREATE VIEW room_view
    AS SELECT a.*,b.*
    FROM j4_booking a INNER JOIN j4_scheduling b
    on a.room_id = b.room_id;
    
  5. from https://stackoverflow.com/questions/9853586/how-can-i-join-multiple-sql-tables-using-the-ids by cc-by-sa and MIT license