SQL将两个表从两个条件连接到一个表中
在VisualStudio中,我有两个SQL表达式,但我想将它们组合成一个,以便在同一个表中轻松分析结果。现在,我有两个并排的表,并手动比较数据 表达式1将测试员工是否列出了活动:表中将显示活动的员工 雇员 员工1 雇员2 雇员3 雇员4 雇员5 雇员6SQL将两个表从两个条件连接到一个表中,sql,sql-server,Sql,Sql Server,在VisualStudio中,我有两个SQL表达式,但我想将它们组合成一个,以便在同一个表中轻松分析结果。现在,我有两个并排的表,并手动比较数据 表达式1将测试员工是否列出了活动:表中将显示活动的员工 雇员 员工1 雇员2 雇员3 雇员4 雇员5 雇员6 我认为您需要首先查询Employee表以获取所有活动的Employee,然后在bi和bo表上执行左联接。比如说: SELECT ag.name, bi.job as 'Operation', bi.data
我认为您需要首先查询Employee表以获取所有活动的Employee,然后在bi和bo表上执行左联接。比如说:
SELECT ag.name,
bi.job as 'Operation',
bi.data as 'Time',
bo.client as 'Client'
FROM AG
LEFT JOIN bi
ON ag.no=bi.no AND (bi.dos = 33 OR bi.dos = 71) AND (YEAR(bi.data2) = 1900) AND (AG.activef=1)
LEFT JOIN bo
ON bi.aobr = bo.obr
WHERE ag.active = 1
order by ag.name
下面的查询应该对您有所帮助。因此,基本上,从AG中,您将获取所有活动员工(AG.active=1),然后对于所有活动员工,您将显示他们的工作任务、时间和客户名称。左联接有助于从左表中提取所有记录(即从表AG中提取所有活动员工记录),如果联接列中存在匹配项,则从其他两个表中提取匹配记录
SELECT AG.name,
bi.job as 'Operation',
bi.data as 'Time',
bo.client as 'Client'
FROM AG
LEFT JOIN bi ON AG.no = bi.no
AND (bi.dos = 33 OR bi.dos = 71)
AND YEAR(bi.data2) = 1900
LEFT JOIN bo ON bi.aobr = bo.obr
WHERE AG.active = 1
他说他还想显示不活跃的员工,因此
ag.active=1
条件应该从WHERE
移动到bi
表左侧连接部分的,是的,我不确定他所说的是什么-“列出所有满足表达式1条件的员工,然后…”。如果他只希望整个列表中的active=1,那么他应该保持这种方式。如果不把它移到ON。是的,这很混乱,但是如果最后一个表是他想要的输出,那么我说的应该做。我很抱歉没有解释清楚。一方面,我试图解释一切,但我也试图不创造一个很长的文本,它可能不清楚。我所说的“列出所有满足表达式1条件的员工,然后”是指所有人都希望列出所有活动的员工,在本例中,这是第一个表。我将尝试该代码。