Je peux actuellement interroger la jointure de deux tables sur l'égalité d'une clé étrangère/primaire de la manière suivante.
$result = mysql_query("SELECT * FROM `table1`
INNER JOIN
`table2` ON table1.primaryKey=table2.table1Id");
J'aimerais étendre cela à plusieurs tables (toutes avec les mêmes clés étrangères). J'essaye le code suivant qui ne renvoie rien. Quelqu'un peut-il signaler ce que je fais mal?
$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
Voici une syntaxe de requête SQL générale pour joindre trois tables ou plus. Cette requête SQL devrait fonctionner dans toutes les bases de données de relations principales, par exemple. MySQL, Oracle, Microsoft SQLServer, Sybase et PostgreSQL:
SELECT t1.col, t3.col FROM table1 join table2 ON table1.primarykey = table2.foreignkey
join table3 ON table2.primarykey = table3.foreignkey
Nous joignons d’abord la table 1 et la table 2, qui produisent une table temporaire contenant les données combinées de table1 et table2, qui sont ensuite jointes à table3. Cette formule peut être étendue de plus de 3 tables à N tables. Vous devez simplement vous assurer que la requête SQL doit avoir une instruction de jointure N-1 pour pouvoir joindre N tables. comme pour joindre deux tables, nous avons besoin d'une déclaration de jointure et pour joindre trois tables, nous avons besoin de deux déclarations de jointure.
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;
Une solution possible:
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';
essayez cette méthode ci-dessous, modifiez-la en fonction de vos besoins.
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 * 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;
La syntaxe right est comme:
SELECT * FROM table1 INNER JOIN table2 ON table1.primaryKey = table2.ForeignKey
INNER JOIN table3 ON table3.primaryKey = table2.ForeignKey
Ou la dernière ligne rejoignant table3 sur table1 comme:
ON table3.ForeignKey= table1.PrimaryKey
Veuillez trouver une jointure interne pour plus de 2 tables ici
Voici 4 noms de table comme
Donc, le code SQL serait:
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 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
Il y a 3 tables 1. tbl_Gender 2. tblWUCS 3. tblYear