我目前可以通过以下方式查询外键/主键相等的两个表的连接。
$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");
答案 0 :(得分:125)
SELECT *
FROM table1
INNER JOIN table2
ON table1.primaryKey=table2.table1Id
INNER JOIN table3
ON table1.primaryKey=table3.table1Id
答案 1 :(得分:22)
这是一个连接三个或更多表的常规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
我们首先连接表1和表2,它们生成一个临时表,其中包含table1和table2的组合数据,然后将其连接到table3。这个公式可以扩展到3个以上的表到N个表,你只需要确保SQL查询应该有N-1个连接语句才能连接N个表。比如加入两个表,我们需要1个连接语句,加入3个表我们需要2个连接语句。
答案 2 :(得分:1)
可能的解决方案:
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';
答案 3 :(得分:1)
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 :(得分:0)
right syntax就像:
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
答案 5 :(得分:0)
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;
答案 6 :(得分:0)
请在此处找到超过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;
答案 7 :(得分:0)
尝试下面给出的方法,根据需要进行修改。
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'
答案 8 :(得分:0)
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
答案 9 :(得分:-1)
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