如何进行sql多表查询?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何进行sql多表查询?相关的知识,希望对你有一定的参考价值。

我在sqlserver里面有四个表,分别是AA BB CC DD,各有4个字段11 22 33 44关系如下:

11.AA=22.BB=33.CC=44.DD

请问如何在网页提交模糊查询时,同时检索这4个表?

另外关键的问题是: 这4个表查询出来的内容是不同的链接的,怎么分类显示出来呢?
低调的虫子 :
我有很多表,内容都是不一样的,我觉得没必要做成一个表
另外我不觉得将所有内容放一个表就是数据库学的好:)

----------
lgamoy :
是否可以将4个表的查询内容合成一个临时表呢?然后再从这个临时表里查询数据?

-----------
lgamoy:

其实很简单,就是一个判断.
是这样的.4个表,查询出来内容后,比如AA表的链接用aa.asp,BB表用bb.asp,CC表用cc.asp ,DD表用dd.asp分别去链接对应的查询内容.我不知道4个该怎么写,2个会写

确实,从数据冗余角度讲,合理的把数据分入多个数据库是正确的做法。

“这4个表查询出来的内容是不同的链接的,怎么分类显示出来”
这一句不是很理解,至于连接查询,fly1843 的方法就可以了。

还有些复杂的情况下,可能要使用join来连接,这些都要视情况而定。

当然是可以的,但是不知道有没有这个必要。如果你sql语句写好的话,应该不需要再次查询了吧。能把你的详细需求描述一下不?
就是怎么个分类显示法?
参考技术A 为什么不做一个表呢,选择一个分类。。
你数据库关系学的不怎样。。
至于分类显示,可加判断,按判断显示连地址!
参考技术B select * from AA BB CC DD
where AA.11=BB.22=CC.33=DD.44

查询返回一个数据集...你需要怎样分类显示根据不同的字段显示就行了

Citrix SQL数据如何进行多表联查

除了通过DDC控制台查看登陆用户相关信息,我们还可以通过Citrix 连接的SQL数据库去查看。通过数据库去查看,可以看到更多的信息。

这里示例一个多表查询案例。

--查询用户历史会话信息
SELECT top(20)
c.Clientname 客户端名称,
c.ClientAddress 客户端IP地址,
m.Name AS VDI桌面,
u.UserName AS 用户名,
c.Protocol 协议,
c.IsReconnect,
s.startDate AS SessionStartdate,
c.logonenddate,
c.disconnectdate,
s.enddate AS SessionEndDate,
c.sessionkey
FROM
[CitrixRofficeMonitoring].[MonitorData].[Connection] AS [c]
LEFT JOIN [CitrixRofficeMonitoring].[MonitorData].[Session] AS [s] ON s.SessionKey = c.SessionKey
LEFT JOIN [CitrixRofficeMonitoring].[MonitorData].[Machine] AS [m] ON s.MachineId = m.Id
LEFT JOIN [CitrixRofficeMonitoring].[MonitorData].[User] AS [u] ON s.UserId = u.Id
WHERE c.Protocol=HDX AND u.UserName=dengpeng and m.Name is not null
ORDER BY S.StartDate DESC

如下再做一个注释

--查询用户历史会话信息
SELECT top(20) ##如下表示要查询显示的参数
c.Clientname 客户端名称, ##显示客户端名字,别名为客户端名称
c.ClientAddress 客户端IP地址,
m.Name AS VDI桌面,
u.UserName AS 用户名,
c.Protocol 协议,
c.IsReconnect,
s.startDate AS SessionStartdate,
c.logonenddate,
c.disconnectdate,
s.enddate AS SessionEndDate,
c.sessionkey ###需要查询什么就添加,注意最后显示一行的不需要加标点符号,按下数据库别名后,会自动弹出搜索框
FROM ##多表进行联查,LEFT代表左连接,显示以左边为准
[CitrixRofficeMonitoring].[MonitorData].[Connection] AS [c] ##数据库别名为c,这里需要注意,请替换为实际数据库名称后进行查询。
LEFT JOIN [CitrixRofficeMonitoring].[MonitorData].[Session] AS [s] ON s.SessionKey = c.SessionKey ##数据库别名为s c连接到s表
LEFT JOIN [CitrixRofficeMonitoring].[MonitorData].[Machine] AS [m] ON s.MachineId = m.Id ##数据库别名为m
LEFT JOIN [CitrixRofficeMonitoring].[MonitorData].[User] AS [u] ON s.UserId = u.Id ####数据库别名为u
--WHERE c.Protocol=HDX##过滤连接协议 AND u.UserName=dengpeng##过滤用户名 and m.Name is not null
ORDER BY S.StartDate DESC

注意代码前面加上-- 代表注释

如下图,用SQL客户端连接数据库后,新建查询,按Ctrl+F键进行查询替换为实际数据库名称

Citrix

Citrix


以上是关于如何进行sql多表查询?的主要内容,如果未能解决你的问题,请参考以下文章

SQL多表查询

多表的慢速 SQL 查询

MySQL 如何多表查询

向高手请教一个SQL多表关联查询排序的问题

SQL多表模糊查询

select 多表关联查询