2

テーブル内.....(ID、NAME、EVENT)

データ:

(1,BOB,E)    
(2,JANE,B)    
(3,JOE,C)    
(4,TOM,A)   
(5,JANE,B)    
(6,JOE,C)    
(7,BEN,D)    
(8,TOM,B)    
(9,JANE,D)    
(10,JOE,A)    
(11,JANE,B)    
(12,BOB,C)    
(13,JOE,C)    
.    
.    
.

望ましい出力:

(2,JANE,B)    
(3,JOE,C)    
(5,JANE,B)    
(6,JOE,C)

Jane,B と Joe,C がテーブルに連続して表示される各インスタンスをリストしようとしています。sqlite を使用しています。

どんな助けでも大歓迎です。

4

1 に答える 1

1

これは、SQLite でも機能する標準 SQL で実行できます。アイデアは、特定の行を次および前の行に結合し、条件を確認することです。

select t.*
from t join
     t tnext
     on tnext.id = t.id + 1 join
     t tprev
     on tprev.id = t.id - 1
where (t.name = 'Jane' and t.event = 'B' and tnext.name = 'Joe' and tnext.event = 'C') or
      (tnext.name = 'Jane' and tnext.event = 'B' and t.name = 'Joe' and t.event = 'C') or
      (t.name = 'Jane' and t.event = 'B' and tprev.name = 'Joe' and tprev.event = 'C') or
      (tprev.name = 'Jane' and tprev.event = 'B' and t.name = 'Joe' and t.event = 'C')
于 2012-11-27T03:41:27.063 に答える