从SQL Server中的两个表中获取数据,其中条件为一列

从SQL Server中的两个表中获取数据,其中条件为一列,sql,sql-server,Sql,Sql Server,我有两张表练习和训练。我想从这两个表中获取数据,如下所示: 表格结构(截图):上面的表格是锻炼表格,下面的表格是锻炼表格 我希望结果如下(截图): 在锻炼_name='Testing'的where条件下,如何从这两个表中获得上述结果?简单地将它们连接起来 select w.workout_name, e.exercise_name, e.exercise_image from Workouts w join Exercises e on e.exercise_name = w.exerci

我有两张表
练习
训练
。我想从这两个表中获取数据,如下所示:

表格结构(截图):上面的表格是锻炼表格,下面的表格是锻炼表格

我希望结果如下(截图):


锻炼_name='Testing'
的where条件下,如何从这两个表中获得上述结果?

简单地
将它们连接起来

select w.workout_name, e.exercise_name, e.exercise_image 
from Workouts w
join Exercises e on e.exercise_name = w.exercise_name
where w.workout_name = 'Testing'

只需加入他们

select w.workout_name, e.exercise_name, e.exercise_image 
from Workouts w
join Exercises e on e.exercise_name = w.exercise_name
where w.workout_name = 'Testing'

我们也可以使用交叉申请-

SELECT w.workout_name, w.exercise_name, x.exercise_image 
FROM Workouts w
CROSS APPLY 
( 
    SELECT e.exercise_image FROM Exercises e WHERE e.exercise_name = w.exercise_name 
) x
WHERE w.workout_name = 'Testing'

我们也可以使用交叉申请-

SELECT w.workout_name, w.exercise_name, x.exercise_image 
FROM Workouts w
CROSS APPLY 
( 
    SELECT e.exercise_image FROM Exercises e WHERE e.exercise_name = w.exercise_name 
) x
WHERE w.workout_name = 'Testing'

这不是在为每个
训练执行子查询吗?
?交叉应用用于将表连接到表值函数。。这个问题应该用常规的方法来解决join@caramiriel别担心,sql server并没有那么幼稚。您编写的查询和sql server运行的查询通常会非常不同。阅读rsbms中的查询优化程序的功能:)它在创建执行计划时负责where子句。因此,它将只执行“Testing”锻炼名称的子查询。@CaiusJard啊,太好了,我没想到它也会在交叉应用中执行。谢谢你的信息。(queryplan:)这不是在为每个
训练执行子查询吗?
?交叉应用用于将表连接到表值函数。。这个问题应该用常规的方法来解决join@caramiriel别担心,sql server并没有那么幼稚。您编写的查询和sql server运行的查询通常会非常不同。阅读rsbms中的查询优化程序的功能:)它在创建执行计划时负责where子句。因此,它将只执行“Testing”锻炼名称的子查询。@CaiusJard啊,太好了,我没想到它也会在交叉应用中执行。谢谢你的信息。(queryplan:)