考虑一个SQL Server数据库中的三个表,
STOCK
,
BINS
和
VENDORS
:
:: STOCK :: BINS :: VENDORS
+------+-----+-------+ +-----+--------+ +----+---------+
| SKU | BIN | COUNT | | BIN | VENDOR | | ID | NAME |
+------+-----+-------+ +-----+--------+ +----+---------+
| 1000 | A01 | 3 | | A01 | 1 | | 1 | Apples |
| 2000 | A02 | 4 | | A02 | 1 | | 2 | Oranges |
| 1000 | B01 | 6 | | B01 | 2 | +----+---------+
+------+-----+-------+ +-----+--------+
如何返回包含
股票
表,以及
表,条件是我正在寻找一个特定的sku。供应商名称需要根据bin和VENDORS表之间的ID关系来确定。
期望输出:
+------+-----+-------+---------+
| SKU | BIN | COUNT | VENDOR |
+------+-----+-------+---------+
| 1000 | A01 | 3 | Apples |
| 1000 | B01 | 6 | Oranges |
+------+-----+-------+---------+
我尝试使用左外连接和嵌套选择。例如,使用此查询:
SELECT [stock].*,
(
SELECT [vendors].[name]
FROM [vendors], [bins]
WHERE [vendors].[id] = [bins].[vendor]
AND [bins].[bin] = [stock].[bin]
) AS [vendor]
FROM [stock]
WHERE [stock].[sku] = '1000'
我得到这个结果(问题是空的):
+------+-----+-------+--------+
| SKU | BIN | COUNT | VENDOR |
+------+-----+-------+--------+
| 1000 | A01 | 3 | Apples |
| 1000 | B01 | 6 | NULL |
+------+-----+-------+--------+
我如何形成查询,以便以最有效的方式实现上面提到的所需输出?