Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 添加要选择的伪列,并使用连接查询指示连接来自的表名_Sql_Postgresql - Fatal编程技术网

Sql 添加要选择的伪列,并使用连接查询指示连接来自的表名

Sql 添加要选择的伪列,并使用连接查询指示连接来自的表名,sql,postgresql,Sql,Postgresql,我正在使用MyBatis和PostgreSQL,我需要使用MyBatis鉴别器。我在testcase表中加入了10个表。我想添加一个伪列,每个连接都有一个不同的值,这样我就知道每个连接来自哪个表。然后我可以在MyBatis鉴别器中使用它 我尝试了这个,这显然不起作用,因为它添加了两列,其中每行都有pseudo\u name\u 1或pseudo\u name\u 2 SELECT tc.testcaseid, tc.testname,

我正在使用MyBatis和PostgreSQL,我需要使用MyBatis鉴别器。我在
testcase
表中加入了10个表。我想添加一个伪列,每个连接都有一个不同的值,这样我就知道每个连接来自哪个表。然后我可以在MyBatis鉴别器中使用它

我尝试了这个,这显然不起作用,因为它添加了两列,其中每行都有
pseudo\u name\u 1
pseudo\u name\u 2

SELECT tc.testcaseid,
               tc.testname,

               a.accessoryfilterid,
               a.testcaseid,
               a.accessoryid,
               a.exclude
               'pseudo_name_1' AS pseudo_column,


               c.capabilityfilterid,
               c.exclude,
               c.testcaseid,
               c.capabilityid,
               'pseudo_name_2' AS psudo_column,

FROM testcase AS tc
    FULL JOIN accessoryfilter a on tc.testcaseid = a.testcaseid
    FULL JOIN capabilityfilter c on tc.testcaseid = a.testcaseid
我基本上想要一个伪列,其中带有
accessoryfilter
值的行具有
pseudo\u name\u 1
值,
capabilityfilter
的值具有
pseudo\u name\u 2

SELECT tc.testcaseid,
               tc.testname,

               a.accessoryfilterid,
               a.testcaseid,
               a.accessoryid,
               a.exclude
               'pseudo_name_1' AS pseudo_column,


               c.capabilityfilterid,
               c.exclude,
               c.testcaseid,
               c.capabilityid,
               'pseudo_name_2' AS psudo_column,

FROM testcase AS tc
    FULL JOIN accessoryfilter a on tc.testcaseid = a.testcaseid
    FULL JOIN capabilityfilter c on tc.testcaseid = a.testcaseid
这在postgres中是否可能,如果可能,如何实现?

可能:


也许:



使用“全部联合”:

SELECT tc.testcaseid, tc.testname,
       a.accessoryfilterid, a.testcaseid, a.accessoryid, a.exclude,
       'pseudo_name_1' AS pseudo_column,
FROM testcase tc JOIN
     accessoryfilter a 
     ON tc.testcaseid = a.testcaseid
UNION ALL
SELECT tc.testcaseid, tc.testname,
       c.capabilityfilterid, c.exclude, c.testcaseid, c.capabilityid,
       'pseudo_name_2' AS psudo_column
FROM testcase tc JOIN 
     capabilityfilter c 
     ON tc.testcaseid = c.testcaseid;

请注意,这还修复了第二个
连接
条件。

使用
联合所有

SELECT tc.testcaseid, tc.testname,
       a.accessoryfilterid, a.testcaseid, a.accessoryid, a.exclude,
       'pseudo_name_1' AS pseudo_column,
FROM testcase tc JOIN
     accessoryfilter a 
     ON tc.testcaseid = a.testcaseid
UNION ALL
SELECT tc.testcaseid, tc.testname,
       c.capabilityfilterid, c.exclude, c.testcaseid, c.capabilityid,
       'pseudo_name_2' AS psudo_column
FROM testcase tc JOIN 
     capabilityfilter c 
     ON tc.testcaseid = c.testcaseid;

请注意,这也修复了第二个
连接
条件。

可能与
情况类似,当a.accessoryfilterid为null时,则“pseudo\u name\u 1”或“pseudo\u name\u 2”结束可以帮忙吗?(您可能至少还需要改进ELSE子句)。LEFT JOIN+COALESCE()@wildplasser您能详细说明一下吗@HeikoJakubzik会不会仅仅修改
a.acessoryfilterid
?我需要一个跨越所有连接的“共享”列,以便mybatis(我的sql映射器)在……
子句是一个单独的列时切换到
情况;在
END
之后附加
作为伪列
,以便为其命名。因此,不,它不会修改acessoryfilterid。但我不能说我理解mybatis中对共享列的要求,也不能说我理解您所看到的两种情况可以帮忙吗?(您可能至少还需要改进ELSE子句)。LEFT JOIN+COALESCE()@wildplasser您能详细说明一下吗@HeikoJakubzik会不会仅仅修改
a.acessoryfilterid
?我需要一个跨越所有连接的“共享”列,以便mybatis(我的sql映射器)在……
子句是一个单独的列时切换到
情况;在
END
之后附加
作为伪列
,以便为其命名。因此,不,它不会修改acessoryfilterid。但我不能说我理解mybatis中对共享列的要求,也不能说我理解您所看到的这两种情况。