wake-up-neo.net

SQL Inner Join mehr als zwei Tabellen

Ich kann derzeit den Join von zwei Tabellen auf die Gleichheit eines Fremd-/Primärschlüssels auf folgende Weise abfragen.

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

Ich möchte dies auf mehrere Tabellen erweitern (alle mit den gleichen Fremdschlüsseln). Ich versuche den folgenden Code, der nichts zurückgibt. Kann mir jemand sagen, was ich falsch mache?

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

Hier ist eine allgemeine SQL-Abfragesyntax zum Verknüpfen von drei oder mehr Tabellen. Diese SQL-Abfrage sollte in allen wichtigen Beziehungsdatenbanken funktionieren, z. MySQL, Oracle, Microsoft SQLServer, Sybase und PostgreSQL:

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

Zuerst verbinden wir Tabelle 1 und Tabelle 2, die eine temporäre Tabelle mit kombinierten Daten aus Tabelle 1 und Tabelle 2 erzeugen, die dann mit Tabelle 3 verknüpft wird. Diese Formel kann für mehr als 3 Tabellen zu N Tabellen erweitert werden. Sie müssen lediglich sicherstellen, dass die SQL-Abfrage eine N-1-Join-Anweisung enthält, um N Tabellen zu verknüpfen. Wie beim Zusammenfügen von zwei Tabellen benötigen wir 1 Join-Anweisung und zum Verbinden von 3 Tabellen 2 Join-Anweisungen.

22
Harjeet Jadeja
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;
1

Eine mögliche Lösung:

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';
1
vikramrajc

probieren Sie diese Methode aus und ändern Sie sie entsprechend Ihren Bedürfnissen.

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'
0
Chibuzor
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;
0
Prio

Die richtige Syntax ist wie folgt:

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

Orthe letzte Zeile, die table3 auf table1 verbindet:

ON table3.ForeignKey= table1.PrimaryKey
0
CloudyMarble

Hier finden Sie den inneren Join für mehr als 2 Tabellen

Hier sind 4 Tabellennamen

  1. Aufträge
  2. Kunden
  3. Student
  4. Dozent

Der SQL-Code wäre also:

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;
0
shivaji Lohar
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

Es gibt 3 Tabellen 1. tbl_Gender 2. tblWUCS 3. tblYear 

0
subramanya4