在oracle db中将两个元组合并为一个元组

时间:2016-03-13 07:03:09

标签: sql oracle

假设我有一堆字母组合在一起,我想知道哪一对与另一对最合适,作为一个例子,我有

 a   b   d    b 
 b   c   e    a

它应该返回ab或ba,因为a-b在这里发生的最多。

到目前为止,我已经提出了一个查询,它只是将两个字母拉在一起​​,但是当我运行查询时,我得到类似于上面示例的内容,但所有这些都在单独的元组中,就像这样

 a 
 b

 b
 c

 d
 e

 b 
 a

我需要比较所有PAIRS的出现,到目前为止我的逻辑是我可以使用nvl()来连接它们(但是ab和ba的nvl()返回两个单独的实例),然后运行一个计数,但是我不知道如何调用这些字母

select a.value, b.value
from Letter a, Letter b, Word aw, Word bw, Sentence senA, sentence senb
where a.id = aw.aid and aw.pid = sena.id and b.id = bw.aid and 
bw.pid = senb.id and aw.pid = bw.pid and a.value != b.value 
;

TL; DR:我想做一个计数(a.ltr-b.ltr对),但不知道如何编码。

谢谢!

编辑:表格结构:

letter(id, value)
        \
   word(aid, pid)
              \
     sentence(id, name,sid)
基本上,如果两个字母最后出现在同一个句子中,则它们是一对(债券)。

0 个答案:

没有答案