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

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

请赐教!
...全文
367 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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

  • 打赏
  • 举报
回复
相关推荐
课程设计-基于C++的mfc框架的学生社团管理系统(源码+数据库+报告).zip 本系统实现的功能 本程序为单文档应用程序,主程序界面能实现查询社团信息、修改社团信息、删除社团信息、添加社团信息、入团、退团、用户登录、和用户管理功能其修改社团信息、删除社团信息、添加社团信息和用户管理需要用户登录后才能使用,未登录就点击使用的会会弹出对话框显示您还没有登录,点击登录按钮会弹出用户登录对话框输入正确的用户名称和密码若验证成功则会显示登录成功并显示出您用有的权限高级管理员或者是普通管理员,高级管理员则可以对社团信息进行修改、删除、添加。点击入团按钮会弹出加入社团对话框,对话框内填上相应的信息后点击确定成功加入后会有相关提示,若没有成功则有可能您输入的社团不存,点击退团按钮弹出退出社团对话框,输入您要退出的社团名称和学号点击确定如果成功退出会显示成功的标志,否则的话就是您没有假如该社团活着您填的信息不完全。主程序对话框可以直接控件内输入要修改的社团信息,然后点击修改按钮,分别输入控件的内容然后点击添加按钮,若要添加的社团当前没有的话则添加成功,否则会失败。登录了以后点击用户管理按钮则会弹出用户管理对话框,该对话框内可以修改用户密码,高级管理员还能注册新用户。
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
申请成为版主
帖子事件
创建了帖子
2003-09-12 12:03
社区公告
暂无公告