Подтвердить что ты не робот

SQL Inner объединяет более двух таблиц

Теперь я могу запросить объединение двух таблиц по равенству внешнего/первичного ключа следующим образом.

 $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");
4b9b3361

Ответ 1

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

Ответ 2

Вот общий синтаксис 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, которые создают временную таблицу с комбинированными данными из таблицы1 и таблицы2, которая затем соединяется с таблицей 3. Эта формула может быть расширена для более чем 3 таблиц в N таблицах. Вам просто нужно убедиться, что SQL-запрос должен иметь оператор объединения N-1, чтобы присоединиться к N таблицам. например, для объединения двух таблиц нам требуется 1 оператор объединения, а для объединения трех таблиц нам нужно 2 оператора объединения.

Ответ 3

Возможное решение:

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

Ответ 4

Правильный синтаксис выглядит следующим образом:

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

Или последняя строка, соединяющая таблицу3 в таблице1, например:

ON table3.ForeignKey= table1.PrimaryKey

Ответ 5

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

Пожалуйста, найдите внутреннее соединение для более чем двух таблиц здесь

Вот 4 имени таблицы, например

  • Заказы
  • Клиенты
  • Student
  • Лектор

Таким образом, код 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

попробуйте этот метод, приведенный ниже, измените в соответствии с вашими потребностями.

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

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;

Ответ 9

Попробуйте здесь Синтаксис

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