2011-12-03 46 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它不應該在那裏,我更新了我的答案。 –

相關問題