sql-server - 从表 1 中的 id 返回表 2 中的名称的问题
问题描述
我在这个查询中不断收到错误
我有两张桌子,dbo.litters
和dbo.dogs
。
所有狗的信息都在表dbo.dogs
中,仅供表中参考。ID
dbo.litters
版本 2
Select
Puppy.Reg, Puppy.Name, puppy.LitterId,
p1.Reg, p1.Name, p2.Reg, p2.Name
From
dbo.Dogs Puppy
Join
dbo.litters as p on Puppy.LitterId = p.Id
Join
dbo.Dogs as p1 on Puppy.Id = p.FatherId
Join
dbo.Dogs as p2 on Puppy.Id = p.MotherId
Where
puppy.Reg = 'xxxxx/xxxx'
我想展示小狗的母亲和父亲,这些信息只在dbo.litters
表格中。
我是新手,我看不出哪里出错了。
Select
d.id, d.Reg, d.Name, d.LitterId, l.FatherId, l.MotherId
From
dbo.Dogs D
inner join
dbo.Litters L on d.LitterId = l.Id
where
d.Reg = 'XXXXXX/XXXX'`
此查询返回我需要的信息,但不返回父母的姓名。
结果看起来像这样
ID Reg nr Name LitterID Father ID MotherID
---------------------------------------------------------------
20590 xxxxx/xxxx Fido 8525 11942 12007
我在小提琴中制作了一个小版本,所以每个人都可以看到结构:)
解决方案
您使用别名作为表名,但在连接时未使用。这就是它抛出错误的原因,所以在连接中使用别名:
Select
d.id, d.Regnr, d.Name, d.LitterId, l.FatherId, l.MotherId,D1.Name as fathername,
D2.Name as motherName
From dbo.Litters L
left join dbo.Dogs D
on d.LitterId = l.Id
left join dbo.Dogs D1 on L.FatherId=D1.ID
left join dbo.Dogs D2 on L.MotherId=D2.ID
where
d.Regnr = 'NO34567/2012'
id Regnr Name LitterId FatherId MotherId fathername motherName
3 NO34567/2012 Fido 9000 2 1 king Queen
推荐阅读
- python - 使用 selenium 和 python 为 webtalk autolike & autoshare 创建机器人的问题
- excel - 如何最好地将 0 添加到 range.value 的开头,直到它在 Excel 中的长度为 13 个字符?
- amazon-web-services - HTTPS 到 HTTP 重定向在 ALB 中不起作用
- reactjs - React Download JS PDF文件下载错误
- javascript - 如何在页面加载时自动禁用多选下拉菜单并根据另一个下拉菜单的值启用它?
- angular - 在映射中为对象中的特定元素集应用索引编号
- javascript - 为什么使用 axios 发出 get 请求失败并显示状态码 503?
- javascript - 单击按钮时CSS翻转
- bash - 第 21 行:$'\r':在 wsl 中找不到命令
- node.js - 具有日期选择器输入的表单。我正在使用 nodejs 将我的数据发送到数据库