In [1]:
%load_ext sql
%sql sqlite://
Out[1]:
In [2]:
%%sql
DROP TABLE IF EXISTS Movies;
CREATE TABLE Movies(title VARCHAR(50), year INT, director VARCHAR(50), length INT);
INSERT INTO Movies VALUES('Database Wars', 1967, 'John Joe', 123);
INSERT INTO Movies VALUES('The Databaser', 1992, 'John Bob', 190);
INSERT INTO Movies VALUES('Database Wars', 1998, 'John Jim', 176);
Out[2]:
In [3]:
%sql DROP TABLE IF EXISTS A; DROP TABLE IF EXISTS B;
%sql CREATE TABLE A (x int, y int); CREATE TABLE B (x int, y int);
for i in range(1,6):
%sql INSERT INTO A VALUES (:i, :i+1)
for i in range(1,11,3):
%sql INSERT INTO B VALUES (:i, :i+2)
In [4]:
%sql SELECT * FROM movies
Out[4]:
In [5]:
%%sql
SELECT m.title
FROM Movies m
WHERE m.year <> ANY(SELECT year FROM Movie WHERE title = m.title);
ANY не работает в SQLite! Можно ли переписать запрос?:
In [ ]:
In [6]:
%sql SELECT * FROM A;
Out[6]:
In [7]:
%sql SELECT * FROM B;
Out[7]:
Предполагая отсутствие дублей, можете ли вы написать запрос пересечения только по атрибуту x, не используя INTERSECT или вложенный подзапрос?
In [ ]:
Верните полные кортежи в $A$ и $B$ которые персекаются по $x$ атрибуту:
In [ ]: