繁体   English   中英

有没有 AdventureWorks 经验的人能够帮助我解决我似乎无法解决的问题?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM