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");
SELECT *
FROM table1
INNER JOIN table2
ON table1.primaryKey=table2.table1Id
INNER JOIN table3
ON table1.primaryKey=table3.table1Id
다음은 세 개 이상의 테이블을 조인하는 일반적인 SQL 쿼리 구문입니다. 이 SQL 쿼리는 MySQL, Oracle, Microsoft SQLServer, Sybase 및 PostgreSQL과 같은 모든 주요 관계 데이터베이스에서 작동해야합니다.
SELECT t1.col, t3.col FROM table1 join table2 ON table1.primarykey = table2.foreignkey
join table3 ON table2.primarykey = table3.foreignkey
먼저 table1과 table2의 데이터가 결합 된 임시 테이블을 생성하는 테이블 1과 테이블 2를 조인 한 다음 table3에 조인합니다. 이 공식은 3 개 이상의 테이블에 대해 N 개의 테이블로 확장 할 수 있습니다. N 개의 테이블을 조인하려면 SQL 쿼리에 N-1 개의 조인 문이 있어야합니다. 두 개의 테이블을 결합하려면 하나의 join 문이 필요하고 3 개의 테이블을 결합하려면 2 개의 join 문이 필요합니다.
가능한 해결책 :
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='70000';
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;
올바른 구문은 같다 :
SELECT * FROM table1 INNER JOIN table2 ON table1.primaryKey = table2.ForeignKey
INNER JOIN table3 ON table3.primaryKey = table2.ForeignKey
또는 table1에서 table3을 결합하는 마지막 줄은 다음과 같습니다.
ON table3.ForeignKey= table1.PrimaryKey
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;
여기에서 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;
아래 주어진 방법을 시도하고 필요에 맞게 수정하십시오.
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'
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
시도해보십시오 여기 구문은
SELECT table1 .columnName, table3 .columnName
FROM table1
inner join table2
ON table1.primarykey = table2.foreignkey
inner join table3
ON table2.primarykey = table3.foreignkey
예를 들면 : Select SalesHeader.invoiceDate,ActualSales,DeptName,tblInvDepartment.DeptCode ,LocationCode from SalesDetail Inner Join SalesHeader on SalesDetail.InvoiceNo = SalesHeader.InvoiceNo inner join tblInvDepartment on tblInvDepartment.DeptCode = SalesDetail.DeptCode
ReferenceURL : https://stackoverflow.com/questions/14995000/sql-inner-join-more-than-two-tables
'IT story' 카테고리의 다른 글
'\\? \ 파일에서 구성 데이터를 읽으려는'구성 파일을 읽을 수 없습니다. (0) | 2020.12.28 |
---|---|
Mountain lion 알림 센터에 알림 보내기 (0) | 2020.12.28 |
부트 스트랩 3 : 작은 화면 크기에서만 열 밀기 / 당기기 (0) | 2020.12.28 |
nodejs의 폴더 아래에 * .html 확장자로 파일 찾기 (0) | 2020.12.28 |
데코레이터 패턴을 언제 사용합니까? (0) | 2020.12.28 |