0

我对 SQL 很陌生,对它了解不多,但我学得很快。我有一个数据库,其中包含项目 ID 和手头数量 (qoh) 以及其他一些我没有遇到问题的列。问题是,当我告诉它给我带有 qoh 列的项目 id 列时,它为每个单独的项目提供了近 500 行,因为 qoh 不同,所以我实际上有大约 1200 万行。现在,我要查找的是每件商品的最新数量。我假设这是一个一对多的关系,并且由于我对 SQL 不熟悉,我什至不知道从哪里开始。这是我到目前为止所拥有的:

SELECT DISTINCT item_id, qty_on_hand
FROM database.inv_mast, database.inv_loc
ORDER BY item_id ASC

哦,我正在使用 Microsoft SQL Server Management Studio

这是我想要的:

| item_id |qty_on_hand|
|123456789|   93      |
|456789123|   87      |
|789456123|   74      |

等等

但我得到的是:

| item_id |qty_on_hand|
|123456789|   85      |
|123456789|   82      |
|123456789|   92      |

等等

我得到相同的 item_id 至少 4000 次,因为数据库告诉我,自从我们拥有该项目以来,每秒钟的 qoh 是多少。我只想要运行查询时仓库中的内容。我为所有的菜鸟道歉,但我真的不知道 SQL。

4

2 回答 2

3

您只需使用“,”就可以进行交叉连接。我认为您需要做的是内部连接。

SELECT DISTINCT im.item_id, qty_on_hand
FROM database.inv_mast im
INNER JOIN database.inv_loc in on im.item_id = in.item_id
ORDER BY item_id ASC

您还应该查看左右连接。

所以总而言之,使用“,”就像使用交叉连接

你真的需要学习连接来理解这些查询,看看下面的网站。

http://www.w3schools.com/sql/sql_join.asp

于 2013-10-24T20:48:06.860 回答
1

from子句FROM database.inv_mast, database.inv_loc创建笛卡尔积。WHERE使用条件缩小范围。

于 2013-10-24T20:44:51.210 回答