This is the schema for my questions
嗨,我没有SQL Developer的经验,我正在尝试为以下问题构建查询:
对于目录中的每张DVD,我都需要显示标题,长度,release_date以及所有库中所有客户已检出该DVD的次数。 另外,我想包括那些尚未签出但仍显示0的内容,并按标题对结果进行排序。
到目前为止,我在查询中有这个,但是我在这里有库存:
--Question C. ************* VERIFY
Select
Catalog_Item.Title,
DVD.Length,
Catalog_Item.Release_Date,
(
Select
Count(Transaction.Transaction_ID)
From Transaction
Where
DVD.Catalog_Item_ID = Physical_Item.Catalog_Item_ID
And Physical_Item.Physical_Item_ID = Transaction.Physical_Item_ID
) as "Total_DVD"
From
Catalog_Item,DVD,
Physical_Item
Group by
Catalog_Item.Title,
DVD.Length,
Catalog_Item.Release_Date
如果我运行此确切的查询,我会报错
Not a Group By Expression
如果我排除GROUP BY,我得到的结果似乎与正确的输出不符。
关于我可以使用哪种语法来实现所需输出的任何建议?谢谢!
答案 0 :(得分:1)
您在查询中放置了三个表,但是您没有链接它们。如果不链接它们,则将看到过多重复的行。 另外,您的子查询链接有误,我假设您尝试将主查询中缺少的链接放在此处。
我相信您需要这样的东西:
Select
CI.Title
,DVD.Length
,CI.Release_Date
,NVL(TR.TotalTransactions,0) TotalTransactions
From Catalog_Item CI
INNER JOIN DVD ON DVD.Catalog_Item_ID = CI.Catalog_Item_ID
LEFT JOIN Physical_Item PHI ON CI.Catalog_Item_ID = PHI.Catalog_Item_ID
LEFT JOIN (SELECT Physical_Item_ID
, Count(Transaction_ID) TotalTransactions
FROM Transaction
GROUP BY Physical_Item_ID
) TR ON PHI.Physical_Item_ID = TR.Physical_Item_ID
答案 1 :(得分:0)
首先,将Catalog_Item,Physical_Item和DVD连接在一起。没有适当的连接条件,这三个表将使用笛卡尔积连接进行连接-这可能是您看到意外结果的原因之一。