【问题标题】:SQL Select two columns from one table translated by a column from another tableSQL 从一个表中选择两列,由另一表中的一列翻译
【发布时间】:2013-10-17 21:04:06
【问题描述】:

我有一个表 ID、名字和姓氏。我还有一张孩子和父母的桌子。我想使用 ID 表将子/父表从 int 转换为 nvarchar。在此示例中,我们有两个人,Mark 和 Ray Smith。雷是马克的父母。雷没有父母。

People_Table  
ID|First|Last  
--+-----+----  
0 |NULL|NULL  
10|Mark|Smith  
15|Ray |Smith  

Parent_Child_Table  
Child|Parent  
-----+------  
10   | 15  
15   | 0

我想得到

First|Last|First|Last  
-----+-----+----+-----  
Mark|Smith|Ray|Smith  
Ray|Smith|NULL|NULL

我尝试过使用 INNER JOIN ,但这只给了我孩子的名字,例如。使用两个 select 语句让我得到一份所有人的列表,但不维护结构。有什么想法吗?

对于丑陋的编辑(或缺少编辑)感到抱歉,这是我第一次在这里发帖,我很着急。我希望这不会令人困惑。

【问题讨论】:

标签: sql sql-server sql-server-2005


【解决方案1】:
select p.first, p.last, c.first, c.last
from parent_child_table pc 
inner join people_table p on p.id = pc.parent
inner join people_table c on c.id = pc.child

【讨论】:

  • 谢谢@juergen d!我正在尝试: SELECT People_Table.First, People_Table.Last, People_Table.First, People_Table.Last FROM People_Table INNER JOIN Parent_Child_Table ON People_Table.First = Parent_Child_Table.First INNER JOIN Parent_Child_Table ON People_Table.Last = Parent_Child_Table.Last。
  • 如果你两次加入同一个表,你必须给它们起别名以便区分它们。
  • 好吧,这确实有道理。我遇到的另一个问题是:当我们想要的数据基本上来自 people_table 时,为什么我们要从 parent_child_table 查询?
  • 在查询中首先提到哪个表并不重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2022-01-05
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多