SQL hat sich selbst mit WHERE-Klausel-Abhängigkeiten zwischen den beiden Kopien der Tabelle verbunden

9

Die folgenden zwei Sätze:

%Vor%

werden in der Tabelle sentence_words folgendermaßen dargestellt:

%Vor%

Ich möchte eine Outer-Join-Abfrage durchführen, die mir die Ergebnisse liefert:

%Vor%

Beachten Sie, dass ich in der Mitte des Satzes beginnen möchte, so dass ich nicht annehmen kann, dass word2 word_number = 2 hat. Wenn ich my_start_number = 2 wähle, dann sollte die Abfrage mir folgendes geben:

%Vor%

Ich habe es versucht:

%Vor%

Das gibt mir nur ein Ergebnis, wenn zwei Wörter im Satz sind. Ich bin nicht sicher, was zu tun ist, ist nicht sehr kompliziert.

    
user984003 26.04.2012, 13:57
quelle

2 Antworten

11

Verschieben Sie die word_number + 1 -Anforderung in die LEFT JOIN .

%Vor%     
MatBailie 26.04.2012, 14:01
quelle
1

Dems Antwort ist absolut die richtige. Ich entschied mich, diese Antwort zu schreiben, um den Grund zu erklären, warum Ihre ursprüngliche Lösung nicht funktioniert. Dies liegt daran, dass Sie versuchen, die folgende Ergebnismenge des linken äußeren Joins zu filtern (alle Spalten werden angezeigt, wobei einige Namen abgekürzt sind):

%Vor%

Sehen Sie sich jetzt Ihre where-Klausel an:

%Vor%

... und es sollte relativ einfach zu sehen sein, warum es nicht funktioniert. Zum Beispiel ist s2.word_number niemals NULL .

    
Michael Goldshteyn 26.04.2012 14:12
quelle

Tags und Links