【发布时间】:2014-03-07 03:45:20
【问题描述】:
我有一个查询,我在其中执行三个左外连接,但我只想返回一个结果。
不久前我问过这个问题: Multiple Outer joins return top result
除此之外,我无法返回几个连接之外的第一行。
例如:
obj
|id | name |
1 | bear |
2 | cat |
3 | moose |
obj_cn
|id | obj_id | lex_id | ord
| 1 | 2 | 1 | 3
| 2 | 2 | 2 | 2
| 3 | 2 | 3 | 1
| 4 | 1 | 4 | 1
lex
| id | trm_id |
| 1 | 2 |
| 2 | 1 |
| 3 | 4 |
| 4 | 3 |
trm
| id | trm |
| 1 | puma|
| 2 | lion|
| 3 | brn |
| 4 | cgr|
理想情况下,我想返回排序最低的术语,以及 objtermktr 表中的其他列(以及其他连接,此示例已简化)。
results
|id | name | trm
|1 | bear | brn
|2 | cat | cgr
|3 | moose | NULL
我最初的想法是建立在上述问题的基础上,但是我在比较多个连接时遇到了麻烦,没有为 trm 返回 NULL 值或返回对象 id 2 三次(每个术语一次)。
这个查询不起作用,但这是我正在尝试的一种方式
SELECT id, name ,
,(select trm from trm t where t.id = a.id and r.ord=a.ord7) as term
from obj
left outer join
(select obj_id, lex_id, MIN(ord) ord7 from obj_cn group by obj_id, lex_id) a
on obj.id = a.obj_id
left outer join lex on a.lex_id = lex.trm_id
left outer join trm on lex.trm_id = trm.id)
任何指导将不胜感激。感谢阅读!
更新:我没有制作这个数据库,也无法对其进行重组。
【问题讨论】:
标签: sql left-join outer-join