PRE ANSI-92 Sintassi join sinistro (Sybase)
-
03-07-2019 - |
Domanda
Qual è la sintassi per specificare un join sinistro usando la sintassi pre ANSI-92 (cioè * =) quando parte della clausola Where ha una condizione 'uguale ad alcune costanti'? (in questo caso 100 è la costante)
Esempio:
SELECT t1.ID, t.*
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t1.ID *= 100 and t1.SeqNo *= t.SeqNo
In questo caso voglio tutti i record dalla tabella derivata 't', anche se 't1' non ha corrispondenza. Voglio t1.ID per restituire NULL nella clausola Select quando una riga corrispondente su SeqNo non esiste in 't'.
L'errore che sto ricevendo è " Entrambi i termini di un join esterno devono contenere colonne " ;.
Per il momento sto eseguendo questa query in SQL Server 2005, ma alla fine verrà utilizzata contro un'implementazione di Sybase, che richiede la vecchia sintassi del join.
grazie in anticipo
Soluzione
Penso che questo lo farà, ma dovrai provare per essere sicuro:
SELECT t1.ID, t.*
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t.SeqNo *= t1.SeqNo AND 100 *= t1.ID
Si noti che ho invertito l'ordine sulla parte SeqNo, per indicare meglio quale è il lato sinistro del join.