Sql 在需要条件的上下文中指定的非布尔类型的表达式-在内部联接上
我正在尝试使用内部联接从多个表中获取数据。我尝试了多种解决方案,但无法找到根本原因Sql 在需要条件的上下文中指定的非布尔类型的表达式-在内部联接上,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试使用内部联接从多个表中获取数据。我尝试了多种解决方案,但无法找到根本原因 注意:Admin.Table\u Study和Admin.Table\u组合框在UID上有PK-FK关系。在SQL Server中,内部连接没有(。)括号,它在子句上有一个: 例如,您有两个内部JOINs,但只有一个ON子句,因此剩余的JOINs期望ON子句: SELECT study.Name, study.Type, study.Weight, study.Height, study.Age, me
注意:Admin.Table\u Study和Admin.Table\u组合框在UID上有PK-FK关系。在SQL Server中,
内部连接没有(
。)
括号,它在子句上有一个:
例如,您有两个内部JOIN
s,但只有一个ON
子句,因此剩余的JOIN
s期望ON
子句:
SELECT
study.Name, study.Type, study.Weight, study.Height, study.Age, measurement.*, ssf.*
from
Admin.Table_Study as study
INNER JOIN
(Admin.Table_Data as measurement
INNER JOIN
Admin.Table_ComboBox as ssf)
ON
study.UID = ssf.UID
where
measurement.IsMeasurement = 1
编辑:如果[Admin]。表\u数据
与您可以使用的其他表没有连接
SELECT study.Name, study.Type, study.Weight, study.Height, study.Age, measurement.*, ssf.*
FROM [Admin].Table_Study AS study INNER JOIN
[Admin].Table_Data AS measurement
ON measurement.col = study.col INNER JOIN
[Admin].Table_ComboBox AS ssf
ON study.UID = ssf.UID;
内部联接
需要一个
上的,需要一个条件才能联接
SELECT study.Name, study.Type, study.Weight, study.Height, study.Age
FROM [Admin].Table_Study AS study INNER JOIN
[Admin].Table_ComboBox AS ssf
ON study.UID = ssf.UID;
UNION ALL
SELECT NULL, NULL, NULL, NULL, NULL, COL1, COL2
FROM [Admin].Table_Data AS td
在您的查询中,定义了加入研究和SSF的方式。但如何将测量和ssf结合起来还没有定义。
此外,您不定义如何加入度量
如果按以下方式编写,可以大大简化此查询,但需要指定缺少的联接条件:
SELECT
study.Name, study.Type, study.Weight, study.Height, study.Age, measurement.*, ssf.*
from
Admin.Table_Study as study INNER JOIN Admin.Table_Data as measurement
ON study.ID = measurement.ID -- that what you miss
INNER JOIN Admin.Table_ComboBox as ssf
ON study.UID = ssf.UID
where
measurement.IsMeasurement = 1
请检查这个表达式。在Sql server中,不需要在联接中提供()
SELECT
study.Name, study.Type, study.Weight, study.Height, study.Age, measurement.*, ssf.*
from
Admin.Table_Study as study
INNER JOIN
Admin.Table_Data as measurement
ON *********************
INNER JOIN
Admin.Table_ComboBox as ssf
ON
study.UID = ssf.UID
where
measurement.IsMeasurement = 1
Admin.Table_数据与其他任何表都没有任何连接,这就是我跳过的原因。那样的话我该怎么办
听起来你想要的是交叉连接。这也被称为笛卡尔连接(但这不是SQL选择的名称),您可以将左表中的每一行连接到右表中的每一行:
SELECT
study.Name, study.Type, study.Weight, study.Height, study.Age, measurement.*, ssf.*
from
Admin.Table_Study as study
INNER JOIN
Admin.Table_Data as measurement
ON
study.ID = measurement.ID --******this is what you missed
INNER JOIN
Admin.Table_ComboBox as ssf
ON
study.UID = ssf.UID
where
measurement.IsMeasurement = 1
因为它是all
,CROSS-JOIN
没有ON
子句。为什么用括号?每个联接都需要一个ON。内部联接(Admin.Table\u数据作为度量值
没有ON
子句(和奇数括号)。Admin.Table\u数据与任何其他表都没有任何连接,这就是我跳过的原因。在这种情况下,我该怎么办?[Admin].Table_数据与其他任何表都没有任何关联,这就是我跳过的原因。在这种情况下,你建议我怎么做?@Mirza…使用UNION ALL
而不是JOIN
。你只需从我的答案中复制代码,并在其中添加额外的***
。我还没有看到你的代码。我给出了自己的答复。谢谢你的更新它似乎更“根据需要”。它的工作正是我想要的。再次感谢!
SELECT
study.Name, study.Type, study.Weight, study.Height, study.Age, measurement.*, ssf.*
from
Admin.Table_Study as study
CROSS JOIN
Admin.Table_Data as measurement
INNER JOIN
Admin.Table_ComboBox as ssf
ON
study.UID = ssf.UID
where
measurement.IsMeasurement = 1