使用mysql检索外键后面的列值

时间:2017-02-26 17:13:02

标签: mysql

如果有人让我度过这个麻烦,我会很高兴

我有两个名字员工和借来的表

employee:
id  firstname   lastname    birthdate
1   John         Smith      1976-01-02
2   Laura        Jones      1969-09-05
3   Jane         Green      1967-07-15

borrowed
ref employeeid          book
1       1             Simply SQL
2       2             Ultimate HTML Reference
3       1             Ultimate CSS Reference
4       3             Art and Science of JavaScript

我的问题是:我如何检索借用该书的人的名字" Javascript的艺术与科学"

这是我失败的sql代码。

SELECT book FROM borrowed 
JOIN employee ON employee.id=borrowed.employeeid 
WHERE borrowed.book='Art and Science of Javascript';

在我期待你的帮助之前提前致谢。

2 个答案:

答案 0 :(得分:1)

你几乎就在那里,你需要做的就是SELECT employee.firstnameemployee.lastname

这应该这样做:

SELECT e.firstname, e.lastname 
FROM employee e
JOIN borrowed b ON e.id=b.employeeid 
WHERE b.book='Art and Science of Javascript';

如果您想在单列中同时使用名字和姓氏,那么您可以使用MySQL的CONCAT功能,例如:

SELECT CONCAT(employee.firstname, ' ', employee.lastname) AS name FROM..

更新您还可以使用子查询获得相同的结果,例如:

SELECT CONCAT(firstname, ' ', lastname) AS name
FROM employee WHERE id IN (
    SELECT employeeid 
    FROM borrowed 
    WHERE book = 'Art and Science of Javascript'
);

答案 1 :(得分:1)

除了选择部分之外,您的查询看起来很好。

 SELECT  firstname,lastname  FROM borrowed 
 JOIN employee ON employee.id=borrowed.employeeid 
  WHERE borrowed.book='Art and Science of Javascript';

如果对表名使用别名会更好,但除了select子句

之外,当前代码是正确的