加入表格 - 正确的方法

时间:2015-07-06 01:53:42

标签: sql sql-server join

我不是在查询领域的表达,所以想要了解以下联接查询的实践指导,因为性能对我们的应用程序非常关键。我正在使用MSSQL。

我们有4个表,我可以根据ID来提取数据。以下是表的结构:

    Table:PLANT(ID,NAME)
    ID_PLANT     |    Name
    100         CALIFORNIA
    200         TEXAS

    Table: SITE
    ID_SITE   |   Name        |  ID_PLANT
    1             SAn Ramon      100
    2             Dallas         200
    3             Houstan        200

    Table: MACHINE
    ID_MACHINE     |   Name   |   ID_SITE
    1                  LASIC      1
    2                  MOTOR      1
    3                  PUMP       1
    4                  LASIC      2
    5                  LASIC      3

Table: MACHINEPARTS
    ID_MACHINEPARTS    |   Name  |    ID_MACHINE
    1                      A          1
    2                      B          1
    3                      C          2
    4                      D          2
    5                      E          3
    6                      A          4
    7                      B          4
    8                      A          5
    9                      B          5

现在我需要为MACHINEPARTS显示每个tble的Name列。所以我的查询如下:

SELECT
              MP.ID_MACHINEPARTS,
              MP.NAME,
              M.NAME,
              S.NAME,
              P.NAME
FROM
              PLANT P , SITE S , MACHINE M , MACHINEPARTS MP
WHERE
            MP.ID_MACHINE = M.ID_MACHINE AND
            M.ID_SITE = S.ID_SITE AND
            S.ID_PLANT = P.ID_PLANT

此查询工作正常,但是编写此类连接查询是正确的方法,还是可以使用内部/外部联接等其他方法进行改进?

提前致谢。

1 个答案:

答案 0 :(得分:4)

这不会提高性能,但最好使用标准的ansi连接语法:

SELECT
      MP.ID_MACHINEPARTS,
      MP.NAME,
      M.NAME,
      S.NAME,
      P.NAME
FROM MACHINEPARTS MP
JOIN MACHINE M ON MP.ID_MACHINE = M.ID_MACHINE
JOIN SITE S ON M.ID_SITE = S.ID_SITE
JOIN PLANT P ON S.ID_PLANT = P.ID_PLANT