Frage

Was ist die Syntax ein LEFT JOIN mit pre ANSI-92-Syntax (d * =), wenn ein Teil der spezifizieren Where-Klausel hat eine ‚gleich einen konstanten‘ Zustand? (In diesem Fall 100 ist die Konstante)

Beispiel:


SELECT t1.ID, t.* 
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t1.ID *= 100 and t1.SeqNo *= t.SeqNo

In diesem Fall möchte ich alle Datensätze aus abgeleitete Tabelle ‚t‘, auch wenn ‚t1‘ kein Spiel hat. Ich mag t1.ID NULL in der Select-Klausel zurückzugeben, wenn eine passende Zeile auf seqno nicht in ‚t‘ nicht existiert.

Der Fehler Ich erhalte ist „Beide Begriffe von einer äußeren Verknüpfung müssen Spalten enthalten“.

Ich bin Ausführen dieser Abfrage in SQL Server 2005 für jetzt, aber es wird schließlich gegen eine Sybase-Implementierung verwendet werden, die die alte erfordert Join-Syntax.

Vielen Dank im Voraus

War es hilfreich?

Lösung

Ich denke, das wird es tun, aber Sie werden prüfen müssen, um sicher zu sein:

SELECT t1.ID, t.* 
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t.SeqNo *= t1.SeqNo AND 100 *= t1.ID

Beachten Sie, dass ich die Reihenfolge auf dem seqno Teil umgekehrt, um besser angezeigt, welche die linke Seite des Join.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top