我已经有一段时间怀疑这个问题了,在SQL中的一些做法后我开始问自己:“什么时候才能使用getPixel(Pic1, 310, 0)
”?
由于我用来练习SQL技能的数据库示例庞大,我只想在这里放两个示例查询。假设我想
为每个项目查找二楼各部门销售的总数量
这个问题的答案是:
NATURAL JOIN
然而,当我自己做这个问题时,我只使用了SELECT Item.ItemName, SUM(SaleQTY)
FROM Item INNER JOIN Sale INNER JOIN Department
ON Item.ItemID = Sale.ItemID
AND Department.DepartmentID = Sale.DepartmentID
WHERE DepartmentFloor = 2
GROUP BY Item.ItemName
ORDER BY Item.ItemName;
,这是我的尝试:
NATURAL JOIN
它产生与样本答案完全相同的输出:
SELECT Item.ItemName, SUM(SaleQTY)
FROM Item NATURAL JOIN SALE NATURAL JOIN Department
WHERE DepartmentFloor = 2
GROUP BY Item.ItemName
ORDER BY Item.ItemName
我理解ItemName SUM(SaleQTY)
Boots - snakeproof 2
Camel saddle 1
Elephant polo stick 1
Hat - polar explorer 3
Pith helmet 1
Pocket knife - Nile 2
Sextant 2`
的原因是通过代码中应用的这些条件来确保数据的完整性,并消除任何不满足它们的数据。但我仍然在想,INNER JOIN
是否足以解决这个问题?
如果没有,有哪些重要规则要遵循?