【发布时间】:2014-03-19 07:16:42
【问题描述】:
我有以下表格:
TABLE NAME FIELD NAMES
t1 id,group1,group2,itemname
t2 group1id,name
t3 group2id,name
样本数据:
t2
group1id name
1 Aa
2 AA
3 1AC
t3
group2id name
1 BB
2 CC
t1
id group1 group2 itemname
1 1 1 Abc
2 2 1 Bca
3 3 2 DEC
我想根据 group1,group2 获取 itemname。我想要
在该组下的显示项目名称之后显示组名称和连字符。
所以我这样尝试:
select g1.name||'-'||g2.name grp, g1.name || ' - ' || g2.name as name from
t2 as g1,t3 as g2,t1 i where i.group1=g1.group1id and i.group2=g2.group2id
union all
select g1.name||'-'||g2.name||'-'||itemname grp, itemname as name from
t2 as g1,t3 as g2,t1 i where i.group1=g1.group1id and i.group2=g2.group2id
order by grp
它显示如下输出:
grp Name
1AC-CC 1AC - CC
1AC-CC-dex dex
Aa-BB Aa - BB
AA-BB AA - BB
AA-BB-Abc Abc
Aa-BB-Bca Bca
但我想要:
grp Name
1AC-CC 1AC - CC
1AC-CC-dex dex
Aa-BB Aa - BB
Aa-BB-Bca Bca
AA-BB AA - BB
AA-BB-Abc Abc
如何更改我的订单? grp 仅用于订购目的。
我正在使用 PostgreSQL 9.1。
【问题讨论】:
-
您的查询与您给定的表不匹配。请解决您的问题。
-
列名仍然不匹配。请考虑使用this fiddle。
标签: sql postgresql sql-order-by union postgresql-9.1