SQL查询建议

时间:2012-10-25 15:47:20

标签: sql sql-server

我一直无法找到适当的查询来处理SQL Server中的这种情况。

有两个表,仓库和转移:

仓库

  • wh_id(PK)
  • wh_name

转移

  • transfer_id(PK)
  • transfer_from(FK)
  • transfer_to(FK)

我需要一个返回的查询:

  • transfer_id
  • transfer_from - 姓名,不是身份
  • transfer_to - 姓名,不是身份

到目前为止我尝试过:

SELECT T.transfer_id, WH.wh_name, T.transfer_to
FROM transfer AS T INNER JOIN warehouse AS WH
ON T.transfer_from = WH.wh_id

这只提供transfer_from的名称而不是transfer_to。我需要一个类似的查询,但我的SQL专业水平很低,我只是不知道如何处理这个问题。非常感谢任何指导。

2 个答案:

答案 0 :(得分:5)

您需要加入表warehouse两次,因为您需要在transfer表格中获取两个columsn的等效名称。

SELECT  a.transfer_ID,
        b.wh_name AS from_name,
        c.wh_name AS to_Name
FROM        transfer a
            INNER JOIN warehouse b
                ON a.transfer_from = b.wh_id
            INNER JOIN warehouse c
                ON a.transfer_to = c.wh_id

答案 1 :(得分:0)

select tr.transfer_id, wh_from.wh_name, wh_from.wh_name
from transfer tr, warehouse wh_from, warehouse wh_to
where tr.transfer_From = wh_From.wh_id
and tr.transfer_to = wh_to.wh_id