我在我的數據庫中有兩個表格,一個用於In
,另一個用於Out
。他們有兩列,分別是Quantity
和Price
。我如何編寫一個選擇正確價格的SQL查詢?如何使用SQL管理數據庫中的FIFO隊列?
在例如:如果我有3項在 75,然後3項在爲80.接着我有兩個出 75和第三出應爲75(X)而第四個出應該是80(Y)。
如何爲X和Y編寫價格查詢?他們應該使用第三和第四行的價格。在例子中,有沒有辦法選擇In
-table中的第三行?我不能使用auto_increment作爲「第三」行的標識符,因爲這些表格也會包含其他項目的帖子。這些行不會被刪除,它們將因問責原因而被保存。
SELECT Price FROM In WHERE ...?
新數據庫設計:
+----+
| In |
+----+------+-------+
| Supply_ID | Price |
+-----------+-------+
| 1 | 75 |
| 1 | 75 |
| 1 | 75 |
| 2 | 80 |
| 2 | 80 |
+-----------+-------+
+-----+
| Out |
+-----+-------+-------+
| Delivery_ID | Price |
+-------------+-------+
| 1 | 75 |
| 1 | 75 |
| 2 | X | <- ?
| 3 | Y | <- ?
+-------------+-------+
OLD數據庫設計:
+----+
| In |
+----+------+----------+-------+
| Supply_ID | Quantity | Price |
+-----------+----------+-------+
| 1 | 3 | 75 |
| 2 | 3 | 80 |
+-----------+----------+-------+
+-----+
| Out |
+-----+-------+----------+-------+
| Delivery_ID | Quantity | Price |
+-------------+----------+-------+
| 1 | 2 | 75 |
| 2 | 1 | X | <- ?
| 3 | 1 | Y | <- ?
+-------------+----------+-------+
如果Out中的第二行有Quantity = 2,那麼您希望返回什麼? – 2010-06-09 11:29:13
我不認爲這很容易在SQL中完成。如果在第一次「退出」2之後發生了什麼,有人需要2?你不知怎的必須把它分成75個和80箇中的一個,不是嗎? – 2010-06-09 11:30:53
@大衛M:好點。這將是75 + 80 = 155. – Jonas 2010-06-09 11:33:05