Как распечатать таблицу, используя информацию внешнего ключа?

Друзья у меня есть 3 таблицы следующим образом

create table departments
(
department_id int(20) AUTO_INCREMENT primary key,
department_name varchar(30) not null
);

create table designations
(
designation_id int(20) AUTO_INCREMENT primary key,
designation_name varchar(30) not null
);
create table employees
(
employee_id int(20) AUTO_INCREMENT primary key,
employee_name varchar(30) not null,
department int,
designation int,
salary int(20) not null,
FOREIGN KEY (department) REFERENCES departments(department_id),
FOREIGN KEY (designation) REFERENCES designations(designation_id),
);

Это мои 3 таблицы. Теперь мне нужно просмотреть таблицу сотрудников, как показано ниже

employee_id | имя сотрудника | Обозначение_имя | название отдела | наемный работник

Как я могу получить это? Ниже моя ошибка программы

<?php
$database_connection = new mysqli("localhost","root","","employee_application");
if($database_connection->connect_error)
die ("connection failed".$database_connection->connect_error);

$sql_query = "select employees.employee_name,employees.designation,employees.department,employees.employee_salary,departments.department_id,designations.designation_id
from employees,departments,designations
where employees.department = departments.department_id and employees.designation = designations.designation_id";

$result=$database_connection->query($sql_query);
if($result->num_rows > 0){
echo "<table>";
while($rows = $result->fetch_assoc()){
echo "<tr>";
echo "<td>".$rows["id"]."<td>";
echo "<td>".$rows["name"]."<td>";
echo "<td>".$rows["department"]."<td>";
echo "<td>".$rows["designation"]."<td>";
echo "<td>".$rows["salary"]."<td>";
echo "<tr>";
}
echo "</table>";
}
else{
echo "Table is empty";
}
?>

1

Решение

Вы запрашиваете employee_salary, но в вашей таблице строка называется «зарплата». Обратите на это внимание!

Более того, вы должны использовать LEFT OUTER JOIN для вашего SQL-запроса следующим образом:

SELECT e.employee_id, e.employee_name, e.salary, des.designation_name, dep.department_name
FROM employees e
LEFT OUTER JOIN designations des ON e.designation = des.designation_id
LEFT OUTER JOIN departments dep ON e.department = dep.department_id

Вы также должны изменить эти строки:

echo "<td>".$rows["employee_id"]."<td>";
echo "<td>".$rows["employee_name"]."<td>";
echo "<td>".$rows["department_name"]."<td>";
echo "<td>".$rows["designation_name"]."<td>";
echo "<td>".$rows["salary"]."<td>";
2

Другие решения

ПОПРОБУЙТЕ С ЭТИМ

select employees.employee_id,
employees.employee_name,
designations.designation_name,
departments.department_name,
employees.salary as employee_salary
from employees
left join departments on employees.department = departments.department_id
left join designations on employees.designation = designations.designation_id
1

По вопросам рекламы [email protected]