代码之家  ›  专栏  ›  技术社区  ›  F.Mysir

如何在ms sql server中为每一行表创建一个select?

  •  0
  • F.Mysir  · 技术社区  · 6 年前

    假设我有三张桌子:

    enter image description here

    enter image description here

    enter image description here

    如何选择 CODE 哪一个 IS ACTIVE (=1)从产品表中, LINE NUM DOCUMENT ID ,存在于表行中,并且来自KYT类型的文档

    例如,输出应该类似于:

    enter image description here

    很明显应该是

    SELECT DOCUMENT ID
    FROM [TABLE DOCUMENT]
    WHERE TYPE='KYT'
    

    然后对每一行做些什么。我不知道该怎么做

    2 回复  |  直到 6 年前
        1
  •  2
  •   Doug Coats    6 年前

    你要找的就是加入。下面是一个连接,它从所有三个表中选择所有行。玩玩吧。

    连接是关系数据库管理系统中一个必不可少的概念。他们可以像这个例子一样直截了当,或者根据你需要他们做什么而变得非常狂野。如果你想继续使用sql,你需要精通这些。

    SELECT * 
    FROM products p
    INNER JOIN lines L ON p.[Products ID]=L.[Product ID]
    INNER JOIN document d ON L.[Document ID]=d.[Document ID]
    

    我会帮你分析一下,这样你就能更好地了解发生了什么。

    FROM products p
    

    p被称为别名。这是一种缩短表名的方法,您可能需要多次编写,而且有助于提高可读性。您可以随意使用别名,但我建议您将其设置为有意义的,就像我使用p表示产品等的例子一样。

    INNER JOIN lines L ON p.[Products ID]=L.[Product ID]
    

    on子句用于将表绑定在一起。这通常是架构中的外键关系。要连接的列是同一个数据元素。一个基本的例子就是一个产品id在两个表中,这就是我们如何将两个表中的数据关联在一起。

        2
  •  2
  •   gbeaven    6 年前

    增加了 JOIN 连接3个表的行:

    SELECT [PT].[CODE], [TL].[LINE NUM], [TD].[DOCUMENT ID]
    FROM [TABLE DOCUMENT] as TD
    JOIN [TABLE LINES]    as TL
        on TL.[DOCUMENT ID] = TD.[DOCUMENT ID]
    JOIN [PRODUCTS TABLE] as PT
        on PT.[PRODUCTS ID] = TL.[PRODUCT ID]
    WHERE TYPE='KYT' AND PT.ISACTIVE = 1