【问题标题】:SQL - How to create second query based on firstSQL - 如何基于第一个查询创建第二个查询
【发布时间】:2017-01-31 15:08:22
【问题描述】:

所以我有两个标签:Part_StockPart_Vendor

第一个任务是查询 Part_Stock 以返回存储在特定库存位置 (CON1C7C) 的项目。退回该位置的物品后,我需要找到也在该表中的公司零件编号,并查询到Part_Vendor,以便我可以退回物品使用 Part_Stock 表中的 company 部件编号,并将其与 Manufacturer Part Number 匹配,这两个部件都位于 Part_Vendor 表。

目前我有它,以便我查询 Part_Stock 以获取公司零件编号,然后通过手动输入 公司零件编号查询 Part_Vendor .

现在只有 6 个部分,所以还不错,但最终列表会成倍增长。

有没有什么方法可以得到相同的结果而不必写出每个零件号?

我目前有:

感谢任何帮助。

【问题讨论】:

  • 请使用格式化文本而不是图片。同时标记您正在使用的 dbms。

标签: sql sql-server


【解决方案1】:

你要找的是JOIN:

Select  V.*
From    Part_Stock                      S
Join    Exactmaximet.dbo.Part_Vendor    V   On  V.Prtnum_07 = S.Prtnum_07
Where   S.Stk_06 Like '%CON1C7C%'

注意:我假设您从中获取 Prtnum_07 值的 Part_Stock 列也被命名为 Prtnum_07

【讨论】:

    【解决方案2】:

    我假设第二个表在不同的数据库中(因为use EXACTMAXIMET 语句)
    您可以创建一个表变量,用 PartNumber 值填充它,然后使用此表为另一个选择创建条件。

    DECLARE @t TABLE (PartNumber VARCHAR(255))
    
    INSERT INTO @t (PartNumber)
    SELECT PartNumber
    FROM [Part_Stock]...
    
    USE EXACTMAXIMET
    
    SELECT *
    FROM [Part_Vendor]
    WHERE PRTNUM_07 IN (
            SELECT PartNumber
            FROM @t
            )
    

    【讨论】:

    • 这可以简化为一个选择,根据下面@Siyual 的回答
    • 是的,一般来说,这是更好的方法。但在某些情况下,我使用这个。通常当我想防止因连接来自不同数据库的表(例如繁忙的生产数据库和空闲的日志数据库)而导致锁定时
    猜你喜欢
    • 2015-07-23
    • 2021-01-11
    • 2022-11-30
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多