SQL-Links self-join mit WHERE-Klausel Abhängigkeiten zwischen den zwei Kopien der Tabelle

Den folgenden zwei Sätze:

hello there
bye!

vertreten sind in der Tabelle sentence_words von:

WORD_ID  SENTENCE_ID    WORD    WORD_NUMBER
10       1              hello   1
11       1              there   2
12       2              bye!    1

Ich wollen einer outer-join-Abfrage, die mir die Ergebnisse:

WORD1      WORD2
hello      there
bye!       NULL

Beachten Sie, dass ich wollen kann, beginnen Sie in der Mitte des Satzes, so kann ich nicht davon ausgehen, dass wort2 hat word_number = 2. Wenn ich wählen my_start_number = 2 ist, dann ist die Abfrage sollte mir:

WORD1   WORD2
there   NULL

Habe ich versucht:

(my_start_number = 1)

select  s1.word word1, s2.word word2
from sentence_words s1
left join sentence_words s2
on s1.sentence_id = s2.sentence_id
where s1.word_number = my_start_number
 and (s2.word_number = s1.word_number +1 or s2.word_number is null);

Dass nur gibt mir ein Ergebnis, wenn zwei Wörter in einem Satz. Ich bin mir nicht sicher, was zu tun ist, der ist nicht Weise kompliziert.

  • Was mit mssql, mysql, oracel?
  • Sind Sie versuchen, neu zu erstellen den Satz oder sind Sie einfach nur interessiert an Rückkehr paar Worte?
InformationsquelleAutor user984003 | 2012-04-26
Schreibe einen Kommentar