嗨,我有以下表格和列。
movie: ID, title
person: ID, name
involved: personID, movieID
我需要回答这个问题:
“哪些电影有约翰·特拉沃尔塔或乌玛·瑟曼,但不是都出演?”
如果不创建新表,我无法弄清楚如何做到这一点,所以我制作了 2 个新表。并尝试进行完整的外部连接,您不会得到相交的结果。我发现你不能在 mysql 中进行完全外连接,但必须进行左连接,并与右连接联合。我试过这个,但根本没有得到我想要的结果。我已经被困了一段时间了。谁能指出我正确的方向?
这就是我到目前为止所拥有的。
DROP TABLE IF EXISTS Umatable;
DROP TABLE IF EXISTS Johntable;
CREATE TABLE Umatable(title VARCHAR(500));
CREATE TABLE Johntable(title VARCHAR(500));
INSERT INTO Umatable
SELECT m.title
FROM movie m, person p, involved i
WHERE p.name = "Uma Thurman"
AND p.id = i.personid
AND m.id = i.movieiD;
INSERT INTO Johntable
SELECT m.title
FROM movie m, person p, involved i
WHERE p.name = "John Travolta"
AND p.id = i.personid
AND m.id = i.movieiD;
SELECT *
FROM Umatable
LEFT JOIN Johntable ON Umatable.title = Johntable.title
WHERE Johntable.title IS NULL OR Umatable.title IS NULL
UNION
SELECT *
FROM Umatable
RIGHT JOIN Johntable ON Umatable.title = Johntable.title
WHERE Johntable.title IS NULL OR Umatable.title IS NULL