2011-12-03 43 views
2

简化我的问题。说我有这些表:如何将结果乘以另一个表中的特定值?

供应:

  • supplyName:VARCHAR(20),一个办公用品的只是名字。说笔。
  • quantityPerBox:INT,盒子中供应的数量。

盒:

  • supplyName:VARCHAR(20),供给的名称,引用供应表。
  • numBoxes:INT,供应盒数。

基本上要我想做的是:

SELECT supplyName, numberOfSupply GROUP BY supplyName 
从这些表

。但我希望numberOfSupply为quantityPerBox * numBoxes。

这可以做为查询吗?或者,我是否需要将供应表中的数量以某种语言(例如PHP)存储在程序中并在那里进行计算? (或者,即使可能,作为查询的一部分进行计算真的没有任何好处吗?)

感谢您提前给予的帮助。非常感谢。

回答

1

这当然可以在查询完成,而不必单独存储的值,或使用不同的语言:

SELECT s.supplyName, s.quantityPerBox * b.numBoxes AS NumberOfSupply 
FROM Supply AS s 
INNER JOIN Boxes AS b ON s.supplyName = b.supplyName 

你可能要添加SupplyId到两个表,虽然让你有一个整型值JOIN上:效率比尝试JOIN上的VARCHAR字段更有效。另一个好处是,如果您想要更改某个项目的supplyName,则在进行该更改时,如果您通过ID引用表而不是表中的值,则不必担心外键问题。

+0

啊,我现在看到了。像往常一样,我正在推翻它。非常感谢你指引我朝着正确的方向发展。我有它的工作。 – Tristan

+0

为什么“GROUP BY”? –

+0

@ypercube它不应该在那里,我更新了我的答案。 –

相关问题