我需要一些帮助来刷新我的记忆如何正确查询。
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。
答案 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' (编者)。
相关查询在上面的答案中给出。