![](/img/trans.png)
[英]I attended a Hackerrank online test and I got this question, I couldn't solve it, Help me out if you can
[英]Does anybody with AdventureWorks experience able to help me with a question I can't seem to solve?
我在使用 AdventureWorks 时遇到问题,正在尝试解决一个问题。 仅供参考,这是家庭作业,所以如果可能的话,我会很感激不给我答案。 我所需要的只是朝着正确的方向推动。
我试图回答的问题指出:列出只有主照片的产品。 以下问题应该用一个查询来回答。 每个问题都必须用子查询来回答,没有任何类型的联接或联合。 每个答案都适用于多个表格。
这是我到目前为止所拥有的:
SELECT p.Name
FROM Production.Product p
WHERE ProductID IN (
SELECT ppp.ProductID
FROM Production.ProductProductPhoto ppp
WHERE [Primary] = 1);
我知道我用一张主照片选择了所有东西,但我不确定如何过滤掉带有多张照片的任何产品......
任何帮助都会很棒,谢谢。
Production.ProductProductPhoto
表可以有一个产品的多个记录,因为一个产品可以有很多照片。 将有 1 张主照片和 N 张非主照片。
您可以编写一个子查询来查找Production.ProductProductPhoto
中每个ProductID
只有 1 ProductPhotoID
所有记录,并且该记录必须具有Primary=1
。 这应该会为您提供一个ProductID
值列表,然后您可以将其用于针对Production.Product
的查询
您的查询当前返回每个产品的所有主要照片记录,但它没有解决确定产品是否只有单个照片记录所需的部分。
SELECT p.Name, p.ProductID
FROM Production.Product p
WHERE EXISTS (
SELECT pp.ProductID
FROM Production.ProductProductPhoto pp
WHERE pp.ProductID = p.ProductID
AND EXISTS (
SELECT ph.ProductID
FROM Production.ProductProductPhoto ph
WHERE ph.ProductPhotoID = pp.ProductPhotoID
AND ph.ProductPhotoID = 1)
);
根据您的假设,photoID 为 1 表示没有照片,将其呈现为更容易
Select Name
from Production.Product p
Where p.ProductID in
(Select pp.ProductID
From Production.ProductProductPhoto pp
Where pp.ProductPhotoID = 1)
我跑了你反对我的行有相同的计数 346
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.