SQL Server里如何同时从3个表中取数据?

wendao110123 2009-03-29 10:06:06
做购物车时查询订单信息是从3个表里来组合信息:
想写一条语句同时从表 AddUser,Order,OrderDatail中取数据,是根据3个表的UserID要相等和取的数据的时间都是今天的时间两个控制条件来选。
就像是从第一个表里选姓名,第二个里选时间是等于今天的时间,第3个里选具体的信息(如 所购的物品)
请问如何写选择语句啊?急啊?谢谢
...全文
702 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
M_arlboro 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jiangshun 的回复:]
SQL code

--测试数据
DECLARE @a TABLE(id int)
INSERT @a SELECT 1
UNION ALL SELECT 2

DECLARE @b TABLE(id int)
INSERT @b SELECT 2
UNION ALL SELECT 3

--内联接
SELECT * FROM @a a JOIN @b b ON a.id=b.id
SELECT * FROM @a a,@b b WHERE a.id=b.id
/*--结果(只返回两个表中id相同的记录)
id id
---------------- -----------
2 2
--*/

--左向外联接
SELECT * FROM @a a LE…
[/Quote]

正解
qshurufa 2009-03-30
  • 打赏
  • 举报
回复
SELECT a.字段, b.字段, c.字段 FROM 表名 a INNER JOIN 表名 b ON a.字段 = b.字段 INNER JOIN 表名 c ON
b.字段 = c.字段 WHERE 其它条件
liuping234232783 2009-03-30
  • 打赏
  • 举报
回复
帖个自己用的多表查询;
select sum(a.define26 * a.define34 * d.srate) from sfc_moroutingdetails a inner join jx_momorderp b on b.autoid = a.MoRoutingInspId inner join sfc_morouting c on c.moroutingid = a.moroutingid inner join sfc_workcenter d on d.wcid=a.wcid where mocode='wk2009030040' and c.define2=b.mocode group by b.mocode,b.invcode,b.xrate,b.prqty order by b.mocode,b.invcode



jiangshun 2009-03-29
  • 打赏
  • 举报
回复


--测试数据
DECLARE @a TABLE(id int)
INSERT @a SELECT 1
UNION ALL SELECT 2

DECLARE @b TABLE(id int)
INSERT @b SELECT 2
UNION ALL SELECT 3

--内联接
SELECT * FROM @a a JOIN @b b ON a.id=b.id
SELECT * FROM @a a,@b b WHERE a.id=b.id
/*--结果(只返回两个表中id相同的记录)
id id
---------------- -----------
2 2
--*/

--左向外联接
SELECT * FROM @a a LEFT JOIN @b b ON a.id=b.id
SELECT * FROM @a a,@b b WHERE a.id*=b.id --会产生不明确查询,不建议再使用这种方式
/*--结果(返回@a(左边表)所有的记录,及@b(右边表)的id与@a表id匹配的记录),不匹配的用NULL表示
id id
----------------- -----------
1 NULL
2 2
--*/

--右向外联接
SELECT * FROM @a a RIGHT JOIN @b b ON a.id=b.id
SELECT * FROM @a a,@b b WHERE a.id=*b.id –会产生不明确查询,不建议再使用这种方式
/*--结果(返回@b(右边表)所有的记录,及@a(左边表)的id与@b表id匹配的记录),不匹配的用NULL表示
id id
----------------- -----------
2 2
NULL 3
--*/

--完整外部联接
SELECT * FROM @a a FULL JOIN @b b ON a.id=b.id
/*--结果(返回@a与@b表所有的记录,id不匹配的用NULL表示
id id
----------------- -----------
2 2
NULL 3
1 NULL
--*/

--交叉联接
SELECT * FROM @a a CROSS JOIN @b b
SELECT * FROM @a a,@b b
/*--结果:
id id
----------------- -----------
1 2
2 2
1 3
2 3
--*/

cppfaq 2009-03-29
  • 打赏
  • 举报
回复
pt1314917 2009-03-29
  • 打赏
  • 举报
回复

联表查询就OK了,如:
select a.姓名,b.时间,c.* from adduser a,order b,orderdatail c
where a.userid=b.userid and b.orderid=c.orderid --这里的条件根据自己的变动。

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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