SQL:从每位艺术家那里购买作品的客户| | 2张桌子
所以我有两个表都包含ID 工作: 反式:SQL:从每位艺术家那里购买作品的客户| | 2张桌子,sql,oracle,oracle-sqldeveloper,relational-division,Sql,Oracle,Oracle Sqldeveloper,Relational Division,所以我有两个表都包含ID 工作: 反式: CustomerID, workID 10 1 11 2 12 3 10 4 10 5 到目前为止,我只成功地将所有ID放在一起,但我需要的结果是显示从每个artistID购买工作ID的任何customerID: SELECT trans.customerID, trans.workID, work.artistID FROM trans
CustomerID, workID
10 1
11 2
12 3
10 4
10 5
到目前为止,我只成功地将所有ID放在一起,但我需要的结果是显示从每个artistID购买工作ID的任何customerID:
SELECT
trans.customerID, trans.workID, work.artistID
FROM
trans
INNER JOIN work
ON trans.workID=work.workID
WHERE
trans.customerID IS NOT null
ORDER BY
trans.customerID;
基本上我不知道下一步该怎么做,如果有人能给我指出正确的方向或解释一个非常好的解决方案
编辑:将简化数据添加到表中这将帮助您:
SELECT t.customerId
FROM
( SELECT t.CustomerId, COUNT(DISTINCT artistId) as artists
FROM trans t INNER JOIN work w ON w.workid = t.workid) t
INNER JOIN
( SELECT COUNT(DISTINCT artistId) artists FROM work) a ON t.artists = a.artists
嗯,我认为你应该决定你正在使用的数据库。这是为三个数据库标记的,但我打赌您只使用了一个。为3标记?不知道那是怎么发生的。是的,这是一个数据库。好的,是的,我看到了我做得不好的地方,Oracle-sqldeveloper。这个家庭作业问题要求您实现。你为什么不知道这个词?你怎么找到“每一位艺术家”的名单?有艺术家的主桌吗?或者你的意思是,把艺术品从工作台上分离出来就足够了?我打赌一定有一个艺术家大师表,可以容纳所有可用艺术家的列表,最好也包括这个表。
SELECT t.customerId
FROM
( SELECT t.CustomerId, COUNT(DISTINCT artistId) as artists
FROM trans t INNER JOIN work w ON w.workid = t.workid) t
INNER JOIN
( SELECT COUNT(DISTINCT artistId) artists FROM work) a ON t.artists = a.artists