ms access sql with union all and inner join
ms access sql with union all and inner join
我正在尝试使用 union all 编写一个 sql 和一个具有内部连接 [Code] 的字段。
SELECT TypeID,
(SELECT CodeID
FROM tblID
INNER JOIN tblA ON tblID.TypeID = tblA.TypeID) as Code,
APrice as 1,
Null as 2
FROM tblA
UNION ALL
SELECT TypeID,
(SELECT CodeID
FROM tblID
INNER JOIN tblM ON tblID.TypeID = tblM.TypeID) as Code,
Null as 1,
MPrice as 2
FROM tblM;
您的子查询返回多行。据推测,您打算使用相关子查询。看起来像:
SELECT TypeID,
(SELECT CodeID FROM tblID WHERE tblID.TypeID = tblA.TypeID) as Code,
APrice as aprice,
Null as mprice
FROM tblA
UNION ALL
SELECT TypeID,
(SELECT CodeID FROM tblID WHERE tblID.TypeID = tblM.TypeID) as Code,
Null as aprice,
MPrice as mprice
FROM tblM;
备注:
- 如果您 运行 单独进行子查询,您会看到此错误。您应该学习如何调试查询。
- 我认为数字不是有效的列别名。在任何情况下,它们都是一个糟糕的选择,因此请为列提供真实名称。
- 这个逻辑通常会用
inner join
或 left join
来处理。
我只是在这里猜测您的内部子查询返回了不止一条记录,并且所有记录都出现了问题。但这不可能说,因为您没有共享样本数据或您的错误消息。
考虑使用 LEFT OUTER JOIN(如下)在没有子查询的情况下重写它,或者切换到适当的相关子查询。
SELECT TypeID
,tblID.CodeID
,APrice AS 1
,NULL AS 2
FROM tblA
LEFT OUTER JOIN tblID
ON tblID.TypeID = tblA.TypeID
UNION ALL
SELECT TypeID
,tblID.CodeID
,NULL AS 1
,MPrice AS 2
FROM tblM
LEFT OUTER JOIN tblID
ON tblID.TypeID = tblM.TypeID
我正在尝试使用 union all 编写一个 sql 和一个具有内部连接 [Code] 的字段。
SELECT TypeID,
(SELECT CodeID
FROM tblID
INNER JOIN tblA ON tblID.TypeID = tblA.TypeID) as Code,
APrice as 1,
Null as 2
FROM tblA
UNION ALL
SELECT TypeID,
(SELECT CodeID
FROM tblID
INNER JOIN tblM ON tblID.TypeID = tblM.TypeID) as Code,
Null as 1,
MPrice as 2
FROM tblM;
您的子查询返回多行。据推测,您打算使用相关子查询。看起来像:
SELECT TypeID,
(SELECT CodeID FROM tblID WHERE tblID.TypeID = tblA.TypeID) as Code,
APrice as aprice,
Null as mprice
FROM tblA
UNION ALL
SELECT TypeID,
(SELECT CodeID FROM tblID WHERE tblID.TypeID = tblM.TypeID) as Code,
Null as aprice,
MPrice as mprice
FROM tblM;
备注:
- 如果您 运行 单独进行子查询,您会看到此错误。您应该学习如何调试查询。
- 我认为数字不是有效的列别名。在任何情况下,它们都是一个糟糕的选择,因此请为列提供真实名称。
- 这个逻辑通常会用
inner join
或left join
来处理。
我只是在这里猜测您的内部子查询返回了不止一条记录,并且所有记录都出现了问题。但这不可能说,因为您没有共享样本数据或您的错误消息。
考虑使用 LEFT OUTER JOIN(如下)在没有子查询的情况下重写它,或者切换到适当的相关子查询。
SELECT TypeID
,tblID.CodeID
,APrice AS 1
,NULL AS 2
FROM tblA
LEFT OUTER JOIN tblID
ON tblID.TypeID = tblA.TypeID
UNION ALL
SELECT TypeID
,tblID.CodeID
,NULL AS 1
,MPrice AS 2
FROM tblM
LEFT OUTER JOIN tblID
ON tblID.TypeID = tblM.TypeID