Question

Quelle est la syntaxe pour spécifier une jointure à gauche à l'aide de la syntaxe antérieure à ANSI-92 (c'est-à-dire * =) lorsqu'une partie de la clause Where a une condition "égale à une constante"? (dans ce cas, 100 est la constante)

Exemple:


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

Dans ce cas, je veux tous les enregistrements de la table dérivée 't', même si 't1' n'a pas de correspondance. Je veux que t1.ID renvoie NULL dans la clause Select lorsqu'une ligne correspondante sur SeqNo n'existe pas dans 't'.

L'erreur que je reçois est "Les deux termes d'une jointure externe doivent contenir des colonnes".

J'exécute cette requête dans SQL Server 2005 pour le moment, mais elle sera finalement utilisée pour une implémentation de Sybase, qui nécessite l'ancienne syntaxe de jointure.

merci d'avance

Était-ce utile?

La solution

Je pense que cela va le faire, mais vous devrez tester pour être certain:

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

Notez que j'ai inversé l'ordre de la partie SeqNo pour mieux indiquer le côté gauche de la jointure.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top