我有一个WebSQL数据库,它有三个表,都包含id和PREFIX_name字段。我需要获取单个id的所有名称字段。
目前我正在尝试以下条款:
SELECT A_name FROM TableA WHERE companyId = 1 UNION ALL
SELECT B_name FROM TableB WHERE companyId = 1 UNION ALL
SELECT C_name FROM TableC WHERE companyId = 1
这会按预期返回结果对象,但字段名称错误:
[{
"A_name" : "result from TableA",
},
"A_name" : "result from TableB",
},
"A_name" : "result from TableC"
}];
如您所见,我无法确定哪些表格字段来自。
答案 0 :(得分:3)
当UNION
结果合在一起时,该列会在第一个查询中获取给定的名称(在本例中为A_name
)
不要使用UNION ALL
,而是尝试将表格加在一起:
SELECT A.A_name, B.B_name, C.C_name
FROM TableA A
INNER JOIN TableB B ON A.companyId = B.companyId
INNER JOIN TableC C ON A.companyId = C.companyId
WHERE A.companyId = 1
这将为您提供单行结果。如果你真的希望结果是单独的行,你可以选择表名和* _name字段:
SELECT 'TableA' AS TableName, A_name FROM TableA WHERE companyId = 1 UNION ALL
SELECT 'TableB', B_name FROM TableB WHERE companyId = 1 UNION ALL
SELECT 'TableC', C_name FROM TableC WHERE companyId = 1