복붙노트

[SQL] SQL 내부는 두 개 이상의 테이블을 조인

SQL

SQL 내부는 두 개 이상의 테이블을 조인

저는 현재는 다음과 같은 방법으로 외국 / 기본 키의 평등에 두 개의 테이블을 조인 쿼리 할 수 ​​있습니다.

 $result = mysql_query("SELECT * FROM `table1` 
                         INNER JOIN 
                       `table2` ON table1.primaryKey=table2.table1Id");

여러 개의 테이블 (같은 외래 키를 가진 모든)이 연장하고 싶습니다. 난 아무것도 반환하지 않습니다 다음 코드를하려합니다. 내가 잘못하고 있어요 어떤 사람이 포인트 아웃 할 수 있습니까?

 $result = mysql_query("SELECT * FROM `table1` 
                        INNER JOIN `table2` 
                        INNER JOIN table3 
                        ON table1.primaryKey=table2.table1Id=table3.table1Id");

해결법

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

    1.

    SELECT * 
    FROM table1 
    INNER JOIN table2
          ON table1.primaryKey=table2.table1Id
    INNER JOIN table3
          ON table1.primaryKey=table3.table1Id
    
  2. ==============================

    2.여기에 세 개 이상의 테이블을 조인하는 일반적인 SQL 쿼리 구문입니다. 이 SQL 쿼리는 예를 들어, 모든 주요 관계 데이터베이스에서 작동합니다 MySQL은, 오라클, 마이크로 소프트의 SQLServer, 사이베이스과 PostgreSQL :

    여기에 세 개 이상의 테이블을 조인하는 일반적인 SQL 쿼리 구문입니다. 이 SQL 쿼리는 예를 들어, 모든 주요 관계 데이터베이스에서 작동합니다 MySQL은, 오라클, 마이크로 소프트의 SQLServer, 사이베이스과 PostgreSQL :

    SELECT t1.col, t3.col FROM table1 join table2 ON table1.primarykey = table2.foreignkey
                                      join table3 ON table2.primarykey = table3.foreignkey
    

    우리는 먼저 표 3에 가입 표 1과 표 2에서 결합 된 데이터와 임시 테이블을 생성 표 1과 표 2를 가입 할 수 있습니다. 이 공식은 N 테이블에 3 개 이상의 테이블을 연장 할 수있다, 당신은 확실히 SQL 쿼리는 N-1은 N 개의 테이블을 조인하기 위해 문을 가입해야한다는 것을 확인해야합니다. 두 테이블을 조인에 대한처럼 우리는 하나가 문을 가입하고 우리가이 문에 가입해야 할 3 개 테이블을 조인에 필요한.

  3. ==============================

    3.

    SELECT eb.n_EmpId,
       em.s_EmpName,
       deg.s_DesignationName,
       dm.s_DeptName
    FROM tbl_EmployeeMaster em
     INNER JOIN tbl_DesignationMaster deg ON em.n_DesignationId=deg.n_DesignationId
     INNER JOIN tbl_DepartmentMaster dm ON dm.n_DeptId = em.n_DepartmentId
     INNER JOIN tbl_EmployeeBranch eb ON eb.n_BranchId = em.n_BranchId;
    
  4. ==============================

    4.가능한 솔루션 :

    가능한 솔루션 :

    SELECT Company.Company_Id,Company.Company_Name,
        Invoice_Details.Invoice_No, Product_Details.Price
      FROM Company inner join Invoice_Details
        ON Company.Company_Id=Invoice_Details.Company_Id
     INNER JOIN Product_Details
            ON Invoice_Details.Invoice_No= Product_Details.Invoice_No
     WHERE Price='60000';
    

    - 시험 변경

  5. ==============================

    5.올바른 구문은 같다 :

    올바른 구문은 같다 :

    SELECT * FROM table1 INNER JOIN table2 ON table1.primaryKey = table2.ForeignKey
    INNER JOIN table3 ON table3.primaryKey = table2.ForeignKey
    

    같은 테이블 1 테이블 3에 합류 마지막 줄 :

    ON table3.ForeignKey= table1.PrimaryKey
    
  6. ==============================

    6.

    select * from Employee inner join [Order] 
    On Employee.Employee_id=[Order].Employee_id
    inner join Book 
    On Book.Book_id=[Order].Book_id
    inner join Book_Author
    On Book_Author.Book_id=Book.Book_id
    inner join Author
    On Book_Author.Author_id=Author.Author_id;
    
  7. ==============================

    7.찾아주세요 내부는 여기에 2 개 이상의 테이블 조인

    찾아주세요 내부는 여기에 2 개 이상의 테이블 조인

    여기에 4 테이블 이름 등이있다

    그래서에게 SQL 코드는 다음과 같습니다

    select o.orderid, c.customername, l.lname, s.studadd, s.studmarks 
    from orders o 
        inner join customers c on o.customrid = c.customerid 
        inner join lecturer l  on o.customrid = l.id 
        inner join student s   on o.customrid=s.studmarks;
    
  8. ==============================

    8.당신의 필요에 맞게 수정, 아래에 주어진이 방법을 시도해보십시오.

    당신의 필요에 맞게 수정, 아래에 주어진이 방법을 시도해보십시오.

    SELECT
      employment_status.staff_type,
      COUNT(monthly_pay_register.age),
      monthly_pay_register.BASIC_SALARY,
      monthly_pay_register.TOTAL_MONTHLY_ALLOWANCES,
      monthly_pay_register.MONTHLY_GROSS,
      monthly_pay_register.TOTAL_MONTHLY_DEDUCTIONS,
      monthly_pay_register.MONTHLY_PAY
    FROM 
      (monthly_pay_register INNER JOIN deduction_logs 
    ON
      monthly_pay_register.employee_info_employee_no = deduction_logs.employee_no)
    INNER JOIN
      employment_status ON deduction_logs.employee_no = employment_status.employee_no
    WHERE
      monthly_pay_register.`YEAR`=2017
    and 
      monthly_pay_register.`MONTH`='may'
    
  9. ==============================

    9.

    select WucsName as WUCS_Name,Year,Tot_Households,Tot_Households,Tot_Male_Farmers  from tbl_Gender
    INNER JOIN tblWUCS
    ON tbl_Gender.WUCS_id =tblWUCS .WucsId 
    INNER JOIN tblYear
    ON tbl_Gender.YearID=tblYear.yearID
    

    3 개 테이블이 있습니다 1. tbl_Gender 2. tblWUCS 3. tblYear

  10. ==============================

    10.

    SELECT table1 .columnName, table3 .columnName 
       FROM table1 
         inner join table2 
              ON table1.primarykey = table2.foreignkey 
         inner join table3 
              ON table2.primarykey = table3.foreignkey
    

    예를 들어 : 선택 SalesHeader.invoiceDate, ActualSales, DEPTNAME, tblInvDepartment.DeptCode에 SalesDetail 내부에 참여 SalesHeader에서 LocationCode SalesDetail.InvoiceNo = SalesHeader.InvoiceNo 내부에 tblInvDepartment 가입 tblInvDepartment.DeptCode = SalesDetail.DeptCode

  11. from https://stackoverflow.com/questions/14995000/sql-inner-join-more-than-two-tables by cc-by-sa and MIT license