sql - 组合两个查询的结果,没有公共列
问题描述
我只需要能够编写一个 SQL 语句,允许我qty_value
将从第一个查询调用的列包含到第二个查询中
这些是查询和每个查询的结果:
查询 #1:
SELECT
[Records].[Name], [Tables_Data].[Street_Number], [Tables_Data].[Qty_Value]
FROM
[Tables_Data], [Records]
WHERE
[Records].[Name] = 'John' AND
[Tables_Data].[Street_Number] = '1510' AND
[Records].[ID] = [Tables_Data].[Record_ID]
查询 #2:
SELECT
[Records].[Name], [Tables_Data].[Street_Number], [Tables_Data].[Description], [Tables_Data].[Account]
FROM
[Records], [Tables], [Tables_Data]
WHERE
[Records].[Name] = 'Tim' AND
[Tables].[Name] = 'Owners' AND
[Tables].[Record_ID] = [Records].[ID] AND
[Tables_Data].[Title] LIKE '%Zone%' AND
[Tables_Data].[Record_ID] = [Records].[ID] AND
[Tables_Data].[Table_ID] = [Tables].[ID]
结果
Records.Name, Street_Number, Qty_Value
--------------------------------------
John, 1510, 6
John, 1510, 3
John, 1510, 6
Records.Name, Street_Number, Description, Account
--------------------------------------------------
Tim, 2121, St1, 4040
Tim, 5251, St2, 4141
Tim, 6578, St5, 4246
如您所见,没有通用列,因此我无法使用 JOIN 或 UNION。如果我使用 WITH CLAUSE,我得到了笛卡尔积(9 条记录),这不是我需要的。
我期待以下内容:
Records.Name, Street_Number, Description, Account, Qty_Value
-------------------------------------------------------------
Tim, 2121, St1, 4040, 6
Tim, 5251, St2, 4141, 3
Tim, 6578, St5, 4246, 6
解决方案
You can use full join
and row_number()
:
SELECT rt.*, rtt.*
FROM (SELECT r.[Name], t.[Street_Number], t.[Qty_Value],
ROW_NUMBER() OVER (ORDER BY r.NAME) as seqnum
FROM [Tables_Data] t JOIN
[Records] r
ON r.[ID] = t.[Record_ID]
WHERE r.[Name] = 'John' AND
t.[Street_Number] = '1510'
) rt FULL JOIN
(SELECT r.[Name], td.[Street_Number], td.[Description], td.[Account],
ROW_NUMBER() OVER (ORDER BY r.NAME) as seqnum
FROM [Records] r JOIN
[Tables] t
ON r.[Record_ID] = r.[ID] JOIN
[Tables_Data] td
ON td.[Record_ID] = r.[ID] AND
td.[Table_ID] = t.[ID]
WHERE r.[Name] = 'Tim' AND
t.[Name] = 'Owners' AND
td.[Title] LIKE '%Zone%'
) rtt
ON rt.seqnum = rtt.seqnum;
I also fixed the JOIN syntax and added table aliases.
推荐阅读
- tensorflow - Keras ModelCheckpoint 在 TPU 上无法正常工作
- vue.js - 如何使用 vue-router 将 Bootstrap 安装到这个 Vue.js 项目中?
- reactjs - 如何在 react-to-print 中打印整个页面
- texas-instruments - 如何在 CC2650 Launchpad 上读取 DHT11 传感器,运行 ContikiNg OS 网络演示示例?
- algorithm - 如何在使用随机梯度下降的约束优化问题中计算拉格朗日乘数?
- macos - 无法在 MacOS 上自定义终端提示
- python - 访问最后一个卷积层迁移学习
- xamarin.forms - 错误 MSB6006:“代码设计”在 appcenter 上构建时以代码 1 退出
- javascript - Vimeo 事件不适用于受密码保护的实时事件
- android - 打电话后无法录音