如何在查询中连接三张表?

Goofyyang 2003-09-12 12:03:41
比如说,通过Orders表中的ProductID连接Products表,获得ProductName;再通过
Orders表中的EmployeeID连接Employees表,获得LastName。

请赐教!
...全文
391 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zarge 2003-09-12
  • 打赏
  • 举报
回复
SELECT Orders.*, p.ProductName, e.LastName
FROM Orders o INNER JOIN Products p ON o.ProductID = p.ProductID
INNER JOIN Employees e ON o.EmployeeID = e.EmployeeID

如果Products表或Employees表中不存在对应记录,则用LEFT JOIN
tqqonline 2003-09-12
  • 打赏
  • 举报
回复
select ProductName,LastName
from Orders a
join Products b on a.ProductID=b.ProductID
join Employees c on a.EmployeeID=c.EmployeeID
sjw800614 2003-09-12
  • 打赏
  • 举报
回复
一点小问题
(2) 中应该是使用 INNER JOIN +OUTER JOIN 来实现



嘿嘿,希望可以帮上忙
!

sjw800614 2003-09-12
  • 打赏
  • 举报
回复
查询条件不是太明确,

(1)如果Products表<==>Employees表中存在对应记录,则用inner JOIN
--只有一种情况,那就是匹配
SELECT p.productName,e.LastName
FROM products p INNER JOIN orders o ON p.productID=o.productID
INNER JOIN employee e ON e.EmployeeID=o.EmployeeID

(2)如果Products表<==>Employees表中不存在对应记录,则用inner JOIN

a.取得 所有的定单中产品的名称及其相对应的employee.LastName
SELECT p.productName,isnull(e.LastName,'没有员工lastName')
FROM products p LEFT OUTER JOIN orders o ON p.productID=o.productID
INNER JOIN employee e ON
e.EmployeeID=o.EmployeeID
b.取得 所有的工作人员的 lastname 和其响应的定单 产品名称
SELECT ISNULL(p.productName,'该员工没有定单'),e.LastName
FROM products p INNER JOIN orders o ON p.productID=o.productID
LEFT OUTER JOIN employee e ON e.EmployeeID=o.EmployeeID
c.取得 所有匹配了员工 和 定单 的 lastname和 productName
同 (1)[如果Products表<==>Employees表中存在对应记录,则用inner JOIN]是
一样的

Goofyyang 2003-09-12
  • 打赏
  • 举报
回复
to everyone:
 谢谢大家!
to ysycrazy(风中狂):
你的那位“丢丢”好友不是我,因为我QQ里的名字不是这个:)
netcar 2003-09-12
  • 打赏
  • 举报
回复
select P.ProductName,E.LastName
from Orders O,Products P,Employees E
where O.ProcuctID=P.ProductID and O.EmployeeID=E.EmployeeID

如果Products表或Employees表中不存在对应记录,需要在程序中对NULL值进行处理...
aierong 2003-09-12
  • 打赏
  • 举报
回复
楼主,你的Orders表时数据库自带的表吗

Orders表中没有字段ProductID

奇怪
aierong 2003-09-12
  • 打赏
  • 举报
回复
奇怪

楼主

Orders表中没有ProductID字段
sdhdy 2003-09-12
  • 打赏
  • 举报
回复
select b.ProductName,c.LastName from Orders a
left join Products b on a.ProductID=b.ProductID
left join Employees c on a.EmployeeID=c.EmployeeID
ysycrazy 2003-09-12
  • 打赏
  • 举报
回复
哦!对了我想起来了!我的qq好友里有:'丢丢'这个人!
ysycrazy 2003-09-12
  • 打赏
  • 举报
回复
一定要考虑好用什么连接:
1.如果Products表<==>Employees表中存在对应记录,则用inner JOIN
2.如果Products表<==>Employees表中不存在对应记录,则用left JOIN

SELECT Orders.*, p.ProductName, e.LastName
FROM Orders o INNER JOIN Products p ON o.ProductID = p.ProductID
INNER JOIN Employees e ON o.EmployeeID = e.EmployeeID

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧