2009-03-02 2 views
0

Wie lautet die Syntax zum Angeben eines Linken Joins mit der Prä-ANSI-92-Syntax (d. H. * =), Wenn ein Teil der Where-Klausel die Bedingung "gleich einer Konstanten" hat? (In diesem Fall 100 ist die Konstante)PRE ANSI-92 Linke Join-Syntax (Sybase)

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 habe ich alle Datensätze wollen aus abgeleitete Tabelle 't', auch wenn 't1' kein Spiel hat. Ich möchte, dass t1.ID NULL in der SELECT-Klausel zurückgibt, wenn eine übereinstimmende Zeile in SeqNo nicht in 't' existiert.

Der Fehler, den ich erhalte, ist "Beide Begriffe eines äußeren Joins müssen Spalten enthalten".

Ich führe diese Abfrage in SQL Server 2005 für jetzt aus, aber es wird schließlich gegen eine Sybase-Implementierung verwendet, die die alte Joinsyntax erfordert.

Dank im Voraus

Antwort

0

ich denke, das wird es tun, aber Sie werden sicher sein, testen:

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, besser anzug Das ist die linke Seite des Joins.

+0

habe ich versucht, dass und es gibt keine Datensätze zurück, es nicht wie ein Link verhält Join wenn * = aus dem „= 100“ Teil entfernt wird – user52212

+0

Hmm ... versuchen, die 100 auf der linken Seite des * = –

+0

Or vielleicht ein Fall Bedingung: wenn t1.ID = 100 dann t1.ID ELSE Null –