练习是:
为每部影片和每部基诺放映,如果影片是否在基诺放映(输出:filmtitel、kino、anzahl)。如果胶卷在kino中显示,则打印anzahl>0,否则打印anzahl 0。
我错过了选择打印出所有的电影,如果他们没有显示在基诺与安扎尔0。
我的代码:
SELECT Film.Titel, Vorfuehrung.Kino, 1 AS Anzahl
FROM Film
join Vorfuehrung on Film.FID = Vorfuehrung.FILM
创建数据库的代码:
CREATE TABLE Film
(
FID int,
Titel VARCHAR(255),
Laenge int
);
CREATE TABLE Vorfuehrung
(
Film int,
Kino VARCHAR(255)
);
Create Table Kino
(
Name VARCHAR(255),
Plaetze int,
Saele int
);
INSERT INTO Film (FID, Titel, Laenge) VALUES (1, 'Die Nase', 90);
INSERT INTO Film (FID, Titel, Laenge) VALUES (2, 'Die Hand', 85);
INSERT INTO Film (FID, Titel, Laenge) VALUES (3, 'Der Arm', 120);
INSERT INTO Film (FID, Titel, Laenge) VALUES (4, 'Das Bein', 75);
INSERT INTO Vorfuehrung (Film, Kino) VALUES (1, 'Gloria');
INSERT INTO Vorfuehrung (Film, Kino) VALUES (2, 'Gloria');
INSERT INTO Vorfuehrung (Film, Kino) VALUES (3, 'Gloria');
INSERT INTO Vorfuehrung (Film, Kino) VALUES (2, 'Apollo');
INSERT INTO Vorfuehrung (Film, Kino) VALUES (4, 'Apollo');
INSERT INTO Kino (Name, Plaetze, Saele) VALUES ('Gloria', 200, 3);
INSERT INTO Kino (Name, Plaetze, Saele) VALUES ('Apollo', 300, 2);
1条答案
按热度按时间mepcadol1#
首先做一个交叉连接得到所有
film
以及kino
组合。然后向左加入vorfuehrung
上fid
以及name
(kino
也应该有一个代理键(整数)。那你就可以了GROUP BY fid, name
然后坐飞机count()
在任何列上vorfuehrung
. 如果film
没有在电视上播放kino
,列来自vorfuehrung
是NULL
因此这一行不算在内。