如何编写通过外键的SQL查询

时间:2013-11-12 20:15:41

标签: mysql sql database oracle

我正在努力做到以下几点:

我有两张桌子:

表员工;列Employee_ID和Employee_Name。 Employee_ID是主键

表Emp_Salary; columns Employee_Salary,它是一个链接到employee_ID的外键。

我希望获得ID为40的员工的工资

所以例如

Select employee_salary from EMP_Salary where Employee_ID equals 40;

不幸的是,这不起作用;有什么理由吗?与外国>主键关系应该没问题?

我无法解决的另一个问题是:

 Select employee_Salary from EMP_Salary where Employee_name equals "Dan"

任何见解都表示赞赏。谢谢!

3 个答案:

答案 0 :(得分:1)

因为没有任何名为equals的内容。你可以试试这个:

Select employee_salary from EMP_Salary where Employee_ID =40;

同样你可以试试这个:

Select employee_Salary from EMP_Salary where Employee_name ="Dan"

如果您想要合并两个查询并获得结果,您也可以考虑在MYSQL中查找JOINS

这样的事情:

select EMPLOYEE_SALARY 
from EMPLOYEE E1 inner join EMP_SALARY E2 on E2.EMPLOYEE_ID = E1.EMPLOYEE_ID
where E1.EMPLOYEE_ID = 40;

select EMPLOYEE_SALARY 
from EMPLOYEE E1 inner join EMP_SALARY E2 on E2.EMPLOYEE_ID= E1.EMPLOYEE_ID
where E1.Employee_Name= 'Dan';

答案 1 :(得分:0)

使用=而不是等于:

Select employee_salary from EMP_Salary where Employee_ID = 40;

要按名称获取薪水,您将在Employee_ID上加入两个表,然后将Employee_name放在WHERE子句中:

Select e.employee_salary 
FROM EMP_Salary es 
INNER JOIN employee e ON e.Employee_ID = es.Employee_ID 
WHERE e.Employee_name = 'Dan';

答案 2 :(得分:0)

您是否尝试过使用INNER JOIN

例如:

select EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY from EMPLOYEE A inner join EMP_SALARY B on B.ID_EMPLOYEE = A.ID_EMPLOYEE where ID_EMPLOYEE = --numberhere