查询MySQL表

时间:2014-05-07 04:58:13

标签: mysql sql

我需要一些帮助来刷新我的记忆如何正确查询。

CREATE TABLE Editor
(eid CHAR(4) PRIMARY KEY NOT NULL, 
    fname VARCHAR(15), 
    lname VARCHAR(15));

CREATE TABLE Edited_by
(eid CHAR(4) NOT NULL, 
    isbn CHAR(10) NOT NULL);

现在我需要查询ISBN#3489374345并获取eid,fname,lname。

据我所知,这是......

SELECT eid, fname, lname
FROM Editor, Edited_by
WHERE isbn='3489374345'

但我认为我的WHERE不正确,因为我知道它并没有从Edited_by表中提取ISBN。

4 个答案:

答案 0 :(得分:1)

SELECT e.eid, e.fname, e.lname
FROM Editor e inner join Edited_by b
on e.eid=b.eid
WHERE b.isbn='3489374345'

答案 1 :(得分:1)

为什么不呢

SELECT EB.eid, E.fname, E.lname
FROM Editor E JOIN Edited_by EB
ON Eb.eid = E.eid
WHERE Eb.isbn='3489374345'

查看 MySql Joins

答案 2 :(得分:1)

您需要将 Editor_by 表的外键添加到"编辑器"。

但你需要更改MySQL中列 eid 的名称我知道使用内连接时,两个同名的列会导致错误。

CREATE TABLE Edited_by
(eid CHAR(4) NOT NULL, 
isbn CHAR(10) NOT NULL,
CONSTRAINT fk_Editor_Editor_by  FOREIGN KEY(eid) REFERENCES Editor_by(eid)
);

然后你可以使用这个命令

SELECT eid, fname, lname
FROM Editor a, Edited_by b
WHERE a.eid=b.eid AND b.isbn='3489374345'

或使用内部联接。但是要更改列名称。

答案 3 :(得分:1)

在这里,您正在尝试从编辑器表格中检索数据(至少是fname和lname)以及您的'其中'条件适用于' Edited_by'表。所以,你需要加入这个表。在加入表格之前,作为' eid' ' Edited_by'表绝对是“eid'的一部分。 '编辑'表,你应该添加一个外键关系,其中' eid' (' Edited_by')会引用' eid' (编者)。

相关查询在上面的答案中给出。