SQLite动态别名

时间:2015-02-23 11:25:39

标签: sql sqlite alias

我想在sqlite上定义动态别名(为了获得最通用的SQL查询)。

我有两张桌子t1& T2

t1结构:

id|url|type

t2结构:

id|us|es|fr|de|nl

我的要求如下:

SELECT t1.*,us as name FROM t1 INNER JOIN t2 ON (t1.id = t2.id) ORDER BY t1.id ASC;

我想要做的是,有一个别名(例如:name)给我正确的t2.us值与id匹配,除非类型为id。

例如,我在每个表中都有两个条目:

id|url|type
1|http://www.google.com/|0
2|file:///tmp/file.txt|1

对于t2:

id|us|es|fr|de|nl
1|love|amar|amour|die liebe|liefde
2|sugar|azucar|sucre|zucker|suiker

我希望有这样的东西:

id|url|type|name
1|http://www.google.com/|0|love
2|file:///tmp/file/txt|1|file:///tmp/file/txt

如果type为0,请在t2表中进行研究。 如果type为1,只需输入" url"字段作为名称。

不知道它是否清楚,以及SQLite是否可行。 我想以编程方式避免这样做(在C中)。

由于

1 个答案:

答案 0 :(得分:1)

听起来你正在寻找一个条件语句来选择要显示的列:

SELECT 
    t1.*, 
    CASE WHEN TYPE = 1 THEN url ELSE us END AS name 
FROM t1 
INNER JOIN t2 ON (t1.id = t2.id) 
ORDER BY t1.id ASC;

示例输出:

| id |                    url | type |                 name |
|----|------------------------|------|----------------------|
|  1 | http://www.google.com/ |    0 |                 love |
|  2 |   file:///tmp/file.txt |    1 | file:///tmp/file.txt |

Sample SQL Fiddle