在SQL Server中进行连接

时间:2017-05-30 09:09:05

标签: sql sql-server join

我试图实现一个连接,其中select语句有多个列,它将引用特定表中的相同名称,例如:

SELECT
    sh.shift_number,
    sh.workplace_num,
    wp.workplace_name,
    sh.workplace_num2,
    sh.workplace_num3
FROM shifts AS sh
INNER JOIN workplace AS wk
    ON wp.workplace_num = wk.workplace_num

我的问题是我能够获得第一个工作场所的名称,我如何在工作场所2或工作场所3获得相同的信息

Shift_number | workplace_Num | workplace_name | workplace_Num2 | workplace_Num3
4            | 2             | Teller         | 3              | 4

正如您所见o Wk_placename(Teller)显示wk_placeNum(2)的名称我希望能够显示Wk_placeNum2和Wk_placeNum3的名称,他们都从加入的工作场所表中获取工作场所名称!

我限制上传图片,希望插图描绘的是!!

2 个答案:

答案 0 :(得分:2)

您必须多次加入工作区表。请注意,由于您未指定字段 workplace_num2 workplace_num3 是否可为空,我假设这些字段是如此使用 LEFT JOIN 。如果这些不可为空,则应使用 INNER JOIN

SELECT
    sh.shift_number,
    sh.workplace_num,
    wp.workplace_name,
    sh.workplace_num2,
    wp2.workplace_name as workplace_name2,
    sh.workplace_num3
    wp3.workplace_name as workplace_name3,
FROM shifts AS sh
INNER JOIN workplace AS wp
    ON sh.workplace_num = wp.workplace_num
LEFT JOIN workplace AS wp2
    ON sh.workplace_num2 = wp2.workplace_num
LEFT JOIN workplace AS wp3
    ON sh.workplace_num3 = wp3.workplace_num

答案 1 :(得分:1)

试试这个:

SELECT
    sh.shift_number,
    sh.workplace_num,
    wk.workplace_name,
    wk2.workplace_name,
    wk3.workplace_name
FROM shifts AS sh
INNER JOIN workplace AS wk
    ON sh.workplace_num = wk.workplace_num
INNER JOIN workplace AS wk2
    ON sh.workplace_num2 = wk2.workplace_num
INNER JOIN workplace AS wk3
    ON sh.workplace_num3 = wk3.workplace_num