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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top