T-SQL-如何将两个表的结果与两个不同的WHERE子句合并

史蒂文

我有3个表,值,设置和控件。每个SETTING都有一个CONTROL,但不一定都有VALUE。

VALUES          SETTINGS          CONTROLS
------          --------          --------
ID              ID                ID
SettingID       SettingName       SettingID
Value           ProductFamilyID   ControlName
OrderID

我已经尝试过加入和合并,但是无法正常工作。我想要的是查询结果如下所示的查询:

SettingName     ControlName     Value
-----------     -----------     -----
Setting1        Control1        Value1
Setting2        Control58       Value22
Setting3        Control22       null

我忘了提一下,我想在何处VALUE.OrderID = '1'以及何处过滤结果SETTINGS.ProductFamilyID='2'

我一直面临的问题是,有52个设置,但只有45个具有值。因此,在所有左侧联接的情况下,缺少7 SETTING,而我只能看到具有VALUE的45个。

使用UNION时,我有一些接近的地方,但结果分别放在不同的行中(对于CONTROL,是1行,对于VALUE或没有值,是另一行)

SELECT 
    SETTINGS.ID, CONTROLS.ControlName 
FROM 
    CONTROLS
INNER JOIN 
    Settings ON CONTROLS.SettingID = SETTINGS.ID
WHERE 
    SETTINGS.ProductFamilyID = '2'

UNION 

SELECT 
    SETTINGS.ID, VALUES.Value 
FROM 
    VALUES
INNER JOIN 
    SETTINGS ON VALUES.SettingID = SETTINGS.ID
WHERE 
    VALUES.OrderID = '1'

结果是:

SettingID     ControlName
---------     -----------
1             Control1
1             Value1
2             Control2
2             Value2
3             Control3 <--- Control3 has no value
4             Control4
4             Value4

我想要的是将值逐ControlName放在单独的列中。

史蒂文

终于想通了!

SELECT 
    FIRSTSET.ID, FIRSTSET.SETTINGNAME, FIRSTSET.CONTROLNAME, SECONDSET.VALUE 
FROM
    (SELECT 
        SETTINGS.ID AS ID, SETTINGS.SettingName 
    AS 
        SETTINGNAME,  CONTROLS.ControlName AS CONTROLNAME 
    FROM 
        CONTROLS
    INNER JOIN 
        SETTINGS ON CONTROLS.SettingID = Settings.ID
    WHERE 
        SETTINGS.ProductFamilyID = '2') 
    AS FIRSTSET
LEFT JOIN
    (SELECT 
        SETTINGS.ID 
    AS ID2, VALUES.Value AS VALUE FROM VALUES
    INNER JOIN 
        SETTINGS ON VALUES.SettingID = SETTINGS.ID
    WHERE 
        VALUES.SalesOrderLineID = '1') 
    AS SECONDSET
ON FIRSTSET.ID = SECONDSET.ID2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有两个不同表的 t/sql 查询

来自分类Dev

如何使用两个子查询从两个表中提取值?T-SQL

来自分类Dev

如何将两个SQL查询的结果合并为一个

来自分类Dev

SQL Server CE:如何将两个查询的结果合并为一行?

来自分类Dev

T-SQL合并具有公用和公用列的两个表

来自分类Dev

如何将两个不同大小写的sql合并为1?

来自分类Dev

T-SQL比较两个表的值

来自分类Dev

如何将两个 SQL 表的数据合并到一个新的 SQL 表中?

来自分类Dev

SQL查询合并两个表的结果

来自分类Dev

如何将两个sql表中的行和列合并到一个表中

来自分类Dev

合并两个SQL选择的结果

来自分类Dev

将两个SQL结果合并到一个表中

来自分类Dev

SQL:合并两个不同的查询

来自分类Dev

SQL查询两个表并合并结果(略有不同)

来自分类Dev

SQL-根据两个不同的时间线合并两个表

来自分类Dev

(T-SQL) 如何查询审计表,并找到两个日期之间的变化

来自分类Dev

合并两个表-SQL Server

来自分类Dev

SQL合并两个表-Order BY

来自分类Dev

如何将两个SQL查询合并为一个?

来自分类Dev

如何在SQL Server中合并两个不同的select语句的结果集

来自分类Dev

两个表的sql结果

来自分类Dev

合并来自SQL中两个不同表的两个字段

来自分类Dev

如何在SQL(MySQL)中合并两个表?

来自分类Dev

如何在SQL SERVER中合并两个表?

来自分类Dev

如何在sql server中合并两个表?

来自分类Dev

如何根据条件合并两个 SQL Server 表?

来自分类Dev

如何使用SQL将两个或多个表合并为一个

来自分类Dev

如何合并两个表的结果并在sql的单列中显示

来自分类Dev

对两个表的SQL不同查询

Related 相关文章

热门标签

归档