SQLite:如何从多个表中获取某些字段?

时间:2012-08-15 12:16:50

标签: sql web-sql

我有一个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"
}];

如您所见,我无法确定哪些表格字段来自。

1 个答案:

答案 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