使用INNER JOIN连接方式查询所有已婚职工的信息,结果包括部门名称、姓名、职级名称、基本工资、职级工资和职级绩效。
我自己写了一下,你试试可不可以
SELECT
t2.department,
t1.name,
t3.rank_title,
t3.salary,
t3.performance_pay
FROM
tbl_employees t1
INNER JOIN tbl_departments t2 ON t1.department_id = t2.department_id
INNER JOIN tbl_rank_salary t3 ON t1.rank_id = t3.rank_id
select d.department,e.name,r.rank_title,e.base_salary,r.salary,r.performance_pay
from tbl_employee e
inner join tbl_department d on e.department_id=d.department_id
inner join tbl_rank_salary r on r.rank_id=e.rank_id
where e.maritial_status='已婚'
select d.department,e.name,r.rank_title,e.base_salary,r.salary,r.performance_pay
from tbl_employee e
inner join tbl_department d on e.department_id=d.department_id
inner join tbl_rank_salary r on r.rank_id=e.rank_id
where e.maritial_status='已婚'
**
所以正确的修改后的sql应该是:
SELECT
count(*)
FROM
DZShare.T_Y_SBBHDEVICE_SITE S
inner join DZShare.T_C_AI_D A on A.SubstationId=S.station_id
inner join DZShare.T_C_Item_D I ON A.ItemCode=I.ItemCode
inner join DZShare.T_C_HISDATA_1H H ON H.Pid=A.Pid
这条语句想对于前面第一条, 变化是数据量很大的表H被放到了后面, 数据量小的表S被放到了前面。
这样满足了小表撬大表的条件, 查询速度也变快了。
针对该问题,可以使用以下SQL语句进行INNER JOIN连接,查询所有已婚职工的信息,并包括部门名称、姓名、职级名称、基本工资、职级工资和职级绩效:
SELECT dept.dept_name, emp.emp_name, emp.job_rank, emp.basic_salary, emp.job_salary, emp.job_performance
FROM emp
INNER JOIN dept ON emp.dept_id = dept.dept_id
WHERE emp.married = '已婚';
其中,emp为员工信息表,包括姓名、部门id、婚姻状态、职级名称、基本工资、职级工资和职级绩效等字段;dept为部门信息表,包括部门名称和部门id字段。
通过INNER JOIN连接,将员工信息表和部门信息表进行连接,连接条件为员工信息表中的部门id字段和部门信息表中的部门id字段相等。同时,筛选出所有已婚员工的信息,筛选条件为员工信息表中的婚姻状态为“已婚”。
最终查询结果包括部门名称、姓名、职级名称、基本工资、职级工资和职级绩效等信息。