【发布时间】:2021-02-16 19:45:54
【问题描述】:
目前我正在尝试返回一个三表连接以查找我的“曲目”表中的重复曲目标题,并返回曲目编号 |其他连接表的 cd 标题。我的 select 语句目前正在返回连接表中的所有信息,但它不仅仅显示重复项。
我也尝试过使用 group by 和 having 子句来尝试查找 COUNT 的 comptitle。当我尝试它返回一个空表时。
我的表:
CREATE TABLE composition (compid, comptitle,...,
PRIMARY KEY (compid),...);
CREATE TABLE recording (rcdid,..., compid,
PRIMARY KEY (rcdid, compid),...);
CREATE TABLE cd (cdid, cdtitle,...,
PRIMARY KEY(cdid),...);
CREATE TABLE track (cdid, trknum,..., rcdid, compid,
PRIMARY KEY (cdid, trknum),...);
我的声明:
SELECT comptitle, trknum, cdtitle
FROM track JOIN recording ON track.rcdid = recording.rcdid
JOIN composition ON recording.compid = composition.compid
JOIN cd ON cd.cdid = track.cdid;
预期输出 |实际:
EXPECTED:
comptitle | trknum | cdtitle
--------------------------------------------
Cousin Mary | 2 | Giant Steps
Cousin Mary | 10 | Giant Steps
Giant Steps | 1 | Giant Steps
Giant Steps | 8 | Giant Steps
ACTUAL:
comptitle | trknum | cdtitle
----------------------------+--------+-------------
Giant Steps | 8 | Giant Steps
Giant Steps | 1 | Giant Steps
Stomp of King Porter | 1 | Swing
Sing a Study in Brown | 2 | Swing
Cousin Mary | 14 | Swing
Cousin Mary | 10 | Giant Steps
【问题讨论】:
-
包装成
GROUP BY comptitle和HAVING COUNT(*)>1。 -
@PM77-1 当我这样做时,我会在 trknum 和 cdtitle 中分组。然后当我这样做时,它会给我一张空桌子。
标签: sql postgresql