Cela fait des années que j'utilise le langage SQL sous Access et SQL_Server
et dernièrement Oracle 9.
Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT JOIN.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures dans
la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas cette
syntaxe.
Les 2 méthodes sont elle équivalentes ?
Si non, laquelle est préférable ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vuillermet Jacques
Les jointures dans les clauses WHERE ont été rendues obsolètes en 1992 par la norme SQL2.
Microsoft demande depuis longtemps à ces utilisateurs de ne plus utiliser cette technique, indiquant parfois que les requêtes ainsi rédigées ne sont pas censées être optimisées ni mêmes utilisables dans les prochaines versions.
Dans SQL Server 2005, la demande est encore réitérée mais la syntaxe encore maintenue... car des utilisateurs continuent à l'employer... et des écoles/facs continuent à l'enseigner.
Cette technique présente des cas où des ambiguités peuvent apparaître, d'où des erreurs. A mon goût, elle génère des requêtes plus difficilement compréhensibles qu'avec la syntaxe SQL2.
"Borroch" a écrit dans le message de news: 42df65e8$0$22275$
Bonjour à tous
Cela fait des années que j'utilise le langage SQL sous Access et
SQL_Server
et dernièrement Oracle 9. Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT
JOIN.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures
dans
la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas cette syntaxe.
Les 2 méthodes sont elle équivalentes ? Si non, laquelle est préférable ?
Merci
Les jointures dans les clauses WHERE ont été rendues obsolètes en 1992 par
la norme SQL2.
Microsoft demande depuis longtemps à ces utilisateurs de ne plus utiliser
cette technique, indiquant parfois que les requêtes ainsi rédigées ne sont
pas censées être optimisées ni mêmes utilisables dans les prochaines
versions.
Dans SQL Server 2005, la demande est encore réitérée mais la syntaxe encore
maintenue... car des utilisateurs continuent à l'employer... et des
écoles/facs continuent à l'enseigner.
Cette technique présente des cas où des ambiguités peuvent apparaître, d'où
des erreurs.
A mon goût, elle génère des requêtes plus difficilement compréhensibles
qu'avec la syntaxe SQL2.
Les jointures dans les clauses WHERE ont été rendues obsolètes en 1992 par la norme SQL2.
Microsoft demande depuis longtemps à ces utilisateurs de ne plus utiliser cette technique, indiquant parfois que les requêtes ainsi rédigées ne sont pas censées être optimisées ni mêmes utilisables dans les prochaines versions.
Dans SQL Server 2005, la demande est encore réitérée mais la syntaxe encore maintenue... car des utilisateurs continuent à l'employer... et des écoles/facs continuent à l'enseigner.
Cette technique présente des cas où des ambiguités peuvent apparaître, d'où des erreurs. A mon goût, elle génère des requêtes plus difficilement compréhensibles qu'avec la syntaxe SQL2.
"Borroch" a écrit dans le message de news: 42df65e8$0$22275$
Bonjour à tous
Cela fait des années que j'utilise le langage SQL sous Access et
SQL_Server
et dernièrement Oracle 9. Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT
JOIN.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures
dans
la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas cette syntaxe.
Les 2 méthodes sont elle équivalentes ? Si non, laquelle est préférable ?
Merci
Ph. B.
> Bonjour à tous
Bonjour,
Cela fait des années que j'utilise le langage SQL sous Access et SQL_Server et dernièrement Oracle 9. Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT JOIN.
C'est bien ! ;-) Tu utilises les opératuers de la norme SQL2.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures dans la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas cette syntaxe.
Ne vient-elle pas d'un monde où une ancienne version d'Oracle est utilisée (antérieure à la 9 si mes souvernirs sont bons) ?
Les 2 méthodes sont elle équivalentes ?
Tout dépend du parseur SQL et de son niveau de tolérance par rapport à la norme. A cela vient s'ajouter des pbs d'optimisation (sera ce optimisé avec l'ancienne syntaxe ?)...
Si non, laquelle est préférable ?
Ben naturellement, celle de la norme, donc celle que tu uilises... :-) De plus, elle permet de dissocier les conditions de jointure des éventuels critères de filtre et AMHA, amène plus de clarté dans la requête...
Merci
Pour plus de détails, on peut aussi regarder ici: http://sqlpro.developpez.com/cours/sqlaz/jointures/
-- Philippe.
> Bonjour à tous
Bonjour,
Cela fait des années que j'utilise le langage SQL sous Access et SQL_Server
et dernièrement Oracle 9.
Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT JOIN.
C'est bien ! ;-)
Tu utilises les opératuers de la norme SQL2.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures dans
la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas cette
syntaxe.
Ne vient-elle pas d'un monde où une ancienne version d'Oracle est utilisée
(antérieure à la 9 si mes souvernirs sont bons) ?
Les 2 méthodes sont elle équivalentes ?
Tout dépend du parseur SQL et de son niveau de tolérance par rapport à la norme.
A cela vient s'ajouter des pbs d'optimisation (sera ce optimisé avec l'ancienne
syntaxe ?)...
Si non, laquelle est préférable ?
Ben naturellement, celle de la norme, donc celle que tu uilises... :-)
De plus, elle permet de dissocier les conditions de jointure des éventuels
critères de filtre et AMHA, amène plus de clarté dans la requête...
Merci
Pour plus de détails, on peut aussi regarder ici:
http://sqlpro.developpez.com/cours/sqlaz/jointures/
Cela fait des années que j'utilise le langage SQL sous Access et SQL_Server et dernièrement Oracle 9. Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT JOIN.
C'est bien ! ;-) Tu utilises les opératuers de la norme SQL2.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures dans la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas cette syntaxe.
Ne vient-elle pas d'un monde où une ancienne version d'Oracle est utilisée (antérieure à la 9 si mes souvernirs sont bons) ?
Les 2 méthodes sont elle équivalentes ?
Tout dépend du parseur SQL et de son niveau de tolérance par rapport à la norme. A cela vient s'ajouter des pbs d'optimisation (sera ce optimisé avec l'ancienne syntaxe ?)...
Si non, laquelle est préférable ?
Ben naturellement, celle de la norme, donc celle que tu uilises... :-) De plus, elle permet de dissocier les conditions de jointure des éventuels critères de filtre et AMHA, amène plus de clarté dans la requête...
Merci
Pour plus de détails, on peut aussi regarder ici: http://sqlpro.developpez.com/cours/sqlaz/jointures/
-- Philippe.
lionelp
Bonjour,
*= et =* correspondent aux jointures externes, cette syntaxe est déconseillée et ne fonctionne pas dans SQL Server 2005 par défaut (mode compatibilité 90). Dans Oracle la syntaxe était += et =+ si ma méoire est bonne.
Cordialement, LionelP
"Ph. B." wrote in message news:42df71b0$0$7811$
> Bonjour à tous
Bonjour,
> Cela fait des années que j'utilise le langage SQL sous Access et
SQL_Server
> et dernièrement Oracle 9. > Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT
JOIN.
C'est bien ! ;-) Tu utilises les opératuers de la norme SQL2.
> Une nouvelle collègue n'utilise pas ce système, mais fait les jointures
dans
> la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas
cette
> syntaxe.
Ne vient-elle pas d'un monde où une ancienne version d'Oracle est utilisée (antérieure à la 9 si mes souvernirs sont bons) ?
> Les 2 méthodes sont elle équivalentes ?
Tout dépend du parseur SQL et de son niveau de tolérance par rapport à la
norme.
A cela vient s'ajouter des pbs d'optimisation (sera ce optimisé avec
l'ancienne
syntaxe ?)...
> Si non, laquelle est préférable ?
Ben naturellement, celle de la norme, donc celle que tu uilises... :-) De plus, elle permet de dissocier les conditions de jointure des éventuels critères de filtre et AMHA, amène plus de clarté dans la requête...
> Merci
Pour plus de détails, on peut aussi regarder ici: http://sqlpro.developpez.com/cours/sqlaz/jointures/
-- Philippe.
Bonjour,
*= et =* correspondent aux jointures externes, cette syntaxe est
déconseillée et ne fonctionne pas dans SQL Server 2005 par défaut (mode
compatibilité 90).
Dans Oracle la syntaxe était += et =+ si ma méoire est bonne.
Cordialement,
LionelP
"Ph. B." <philippe_N_O_._S_P_A_M_boucault@voila.fr> wrote in message
news:42df71b0$0$7811$626a14ce@news.free.fr...
> Bonjour à tous
Bonjour,
> Cela fait des années que j'utilise le langage SQL sous Access et
SQL_Server
> et dernièrement Oracle 9.
> Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT
JOIN.
C'est bien ! ;-)
Tu utilises les opératuers de la norme SQL2.
> Une nouvelle collègue n'utilise pas ce système, mais fait les jointures
dans
> la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas
cette
> syntaxe.
Ne vient-elle pas d'un monde où une ancienne version d'Oracle est utilisée
(antérieure à la 9 si mes souvernirs sont bons) ?
> Les 2 méthodes sont elle équivalentes ?
Tout dépend du parseur SQL et de son niveau de tolérance par rapport à la
norme.
A cela vient s'ajouter des pbs d'optimisation (sera ce optimisé avec
l'ancienne
syntaxe ?)...
> Si non, laquelle est préférable ?
Ben naturellement, celle de la norme, donc celle que tu uilises... :-)
De plus, elle permet de dissocier les conditions de jointure des éventuels
critères de filtre et AMHA, amène plus de clarté dans la requête...
> Merci
Pour plus de détails, on peut aussi regarder ici:
http://sqlpro.developpez.com/cours/sqlaz/jointures/
*= et =* correspondent aux jointures externes, cette syntaxe est déconseillée et ne fonctionne pas dans SQL Server 2005 par défaut (mode compatibilité 90). Dans Oracle la syntaxe était += et =+ si ma méoire est bonne.
Cordialement, LionelP
"Ph. B." wrote in message news:42df71b0$0$7811$
> Bonjour à tous
Bonjour,
> Cela fait des années que j'utilise le langage SQL sous Access et
SQL_Server
> et dernièrement Oracle 9. > Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT
JOIN.
C'est bien ! ;-) Tu utilises les opératuers de la norme SQL2.
> Une nouvelle collègue n'utilise pas ce système, mais fait les jointures
dans
> la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas
cette
> syntaxe.
Ne vient-elle pas d'un monde où une ancienne version d'Oracle est utilisée (antérieure à la 9 si mes souvernirs sont bons) ?
> Les 2 méthodes sont elle équivalentes ?
Tout dépend du parseur SQL et de son niveau de tolérance par rapport à la
norme.
A cela vient s'ajouter des pbs d'optimisation (sera ce optimisé avec
l'ancienne
syntaxe ?)...
> Si non, laquelle est préférable ?
Ben naturellement, celle de la norme, donc celle que tu uilises... :-) De plus, elle permet de dissocier les conditions de jointure des éventuels critères de filtre et AMHA, amène plus de clarté dans la requête...
> Merci
Pour plus de détails, on peut aussi regarder ici: http://sqlpro.developpez.com/cours/sqlaz/jointures/
-- Philippe.
Fred BROUARD
Bonjour
1) les syntaxes des jointures externes normalisées avec LEFT, ROGHT et FULL OUTER JOIN datent de ... 1992 ! Il serait temps de s'y mettre... Ta collègue à près de 15 ans de retard...
2) l'optimisation des plan de calcul de requête est plus sophistiquées et plus rapide si les jointure normatives sont utilisées.
3) la syntaxe *=, =* et *=* est non seulement propriétaire donc impossible de porter ses requêtes sous un autre serveur (Oracle, IBM DB2, PostGreSQL, Access, MySQL...), mais limitée (on ne peut pas faire des cascades de jointures externes avec ce bidule).
4) les jointures externes avec l'ancienne syntaxe propre à MS SQL Server donne des résultats faux eût égard à la norme SQL. (ce que l'aide en ligne apelle pudiquement "Dans certains cas, cette syntaxe provoque une requête ambiguë qui peut être interprétée de différentes manières" [...])
5) dans l'aide en ligne MS SQL Server 200, on trouve la phrase suivante : "[...]Cette syntaxe risque de ne plus être prise en charge dans les futures versions de SQL Server. Toute instruction utilisant les jointures externes Transact-SQL doivent être modifiées afin d'utiliser la syntaxe SQL-92"
6) MS SQL Server 2005 n'accepte plus nativement les jointures externes. Le message d'erreur est alors le suivant : " Msg 4147, Level 15, State 1, Line 3 The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query without modification, please set the compatibility level for current database to 80 or lower, using stored procedure sp_dbcmptlevel. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes. "
Moralité : jette ta consoeur aux orties, ou invite-là à suivre un formation de recyclage... Mon site, comme mes bouquins, peuvent l'y aider !!!!
A +
-- Fred. BROUARD, MVP SQL Server. Expert SQL, spécialiste SGBD et modèles Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Borroch a écrit:
Bonjour à tous
Cela fait des années que j'utilise le langage SQL sous Access et SQL_Server et dernièrement Oracle 9. Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT JOIN.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures dans la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas cette syntaxe.
Les 2 méthodes sont elle équivalentes ? Si non, laquelle est préférable ?
Merci
Bonjour
1) les syntaxes des jointures externes normalisées avec LEFT, ROGHT et FULL
OUTER JOIN datent de ... 1992 ! Il serait temps de s'y mettre... Ta collègue à
près de 15 ans de retard...
2) l'optimisation des plan de calcul de requête est plus sophistiquées et plus
rapide si les jointure normatives sont utilisées.
3) la syntaxe *=, =* et *=* est non seulement propriétaire donc impossible de
porter ses requêtes sous un autre serveur (Oracle, IBM DB2, PostGreSQL, Access,
MySQL...), mais limitée (on ne peut pas faire des cascades de jointures externes
avec ce bidule).
4) les jointures externes avec l'ancienne syntaxe propre à MS SQL Server donne
des résultats faux eût égard à la norme SQL. (ce que l'aide en ligne apelle
pudiquement "Dans certains cas, cette syntaxe provoque une requête ambiguë qui
peut être interprétée de différentes manières" [...])
5) dans l'aide en ligne MS SQL Server 200, on trouve la phrase suivante :
"[...]Cette syntaxe risque de ne plus être prise en charge dans les futures
versions de SQL Server. Toute instruction utilisant les jointures externes
Transact-SQL doivent être modifiées afin d'utiliser la syntaxe SQL-92"
6) MS SQL Server 2005 n'accepte plus nativement les jointures externes. Le
message d'erreur est alors le suivant :
"
Msg 4147, Level 15, State 1, Line 3
The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query
without modification, please set the compatibility level for current database to
80 or lower, using stored procedure sp_dbcmptlevel. It is strongly recommended
to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT
OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will
not be supported even in backward-compatibility modes.
"
Moralité : jette ta consoeur aux orties, ou invite-là à suivre un formation de
recyclage...
Mon site, comme mes bouquins, peuvent l'y aider !!!!
A +
--
Fred. BROUARD, MVP SQL Server. Expert SQL, spécialiste SGBD et modèles
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Borroch a écrit:
Bonjour à tous
Cela fait des années que j'utilise le langage SQL sous Access et SQL_Server
et dernièrement Oracle 9.
Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT JOIN.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures dans
la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas cette
syntaxe.
Les 2 méthodes sont elle équivalentes ?
Si non, laquelle est préférable ?
1) les syntaxes des jointures externes normalisées avec LEFT, ROGHT et FULL OUTER JOIN datent de ... 1992 ! Il serait temps de s'y mettre... Ta collègue à près de 15 ans de retard...
2) l'optimisation des plan de calcul de requête est plus sophistiquées et plus rapide si les jointure normatives sont utilisées.
3) la syntaxe *=, =* et *=* est non seulement propriétaire donc impossible de porter ses requêtes sous un autre serveur (Oracle, IBM DB2, PostGreSQL, Access, MySQL...), mais limitée (on ne peut pas faire des cascades de jointures externes avec ce bidule).
4) les jointures externes avec l'ancienne syntaxe propre à MS SQL Server donne des résultats faux eût égard à la norme SQL. (ce que l'aide en ligne apelle pudiquement "Dans certains cas, cette syntaxe provoque une requête ambiguë qui peut être interprétée de différentes manières" [...])
5) dans l'aide en ligne MS SQL Server 200, on trouve la phrase suivante : "[...]Cette syntaxe risque de ne plus être prise en charge dans les futures versions de SQL Server. Toute instruction utilisant les jointures externes Transact-SQL doivent être modifiées afin d'utiliser la syntaxe SQL-92"
6) MS SQL Server 2005 n'accepte plus nativement les jointures externes. Le message d'erreur est alors le suivant : " Msg 4147, Level 15, State 1, Line 3 The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query without modification, please set the compatibility level for current database to 80 or lower, using stored procedure sp_dbcmptlevel. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes. "
Moralité : jette ta consoeur aux orties, ou invite-là à suivre un formation de recyclage... Mon site, comme mes bouquins, peuvent l'y aider !!!!
A +
-- Fred. BROUARD, MVP SQL Server. Expert SQL, spécialiste SGBD et modèles Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Borroch a écrit:
Bonjour à tous
Cela fait des années que j'utilise le langage SQL sous Access et SQL_Server et dernièrement Oracle 9. Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT JOIN.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures dans la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas cette syntaxe.
Les 2 méthodes sont elle équivalentes ? Si non, laquelle est préférable ?
Merci
Fred BROUARD
rectif :
Dans Oracle la syntaxe était (+)= et =(+) si ma méoire est bonne.
A +
lionelp a écrit:
Bonjour,
*= et =* correspondent aux jointures externes, cette syntaxe est déconseillée et ne fonctionne pas dans SQL Server 2005 par défaut (mode compatibilité 90). Dans Oracle la syntaxe était += et =+ si ma méoire est bonne.
Cordialement, LionelP
"Ph. B." wrote in message news:42df71b0$0$7811$
Bonjour à tous
Bonjour,
Cela fait des années que j'utilise le langage SQL sous Access et
SQL_Server
et dernièrement Oracle 9. Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT
JOIN.
C'est bien ! ;-) Tu utilises les opératuers de la norme SQL2.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures
dans
la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas
cette
syntaxe.
Ne vient-elle pas d'un monde où une ancienne version d'Oracle est utilisée (antérieure à la 9 si mes souvernirs sont bons) ?
Les 2 méthodes sont elle équivalentes ?
Tout dépend du parseur SQL et de son niveau de tolérance par rapport à la
norme.
A cela vient s'ajouter des pbs d'optimisation (sera ce optimisé avec
l'ancienne
syntaxe ?)...
Si non, laquelle est préférable ?
Ben naturellement, celle de la norme, donc celle que tu uilises... :-) De plus, elle permet de dissocier les conditions de jointure des éventuels critères de filtre et AMHA, amène plus de clarté dans la requête...
Merci
Pour plus de détails, on peut aussi regarder ici: http://sqlpro.developpez.com/cours/sqlaz/jointures/
-- Philippe.
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
rectif :
Dans Oracle la syntaxe était (+)= et =(+) si ma méoire est bonne.
A +
lionelp a écrit:
Bonjour,
*= et =* correspondent aux jointures externes, cette syntaxe est
déconseillée et ne fonctionne pas dans SQL Server 2005 par défaut (mode
compatibilité 90).
Dans Oracle la syntaxe était += et =+ si ma méoire est bonne.
Cordialement,
LionelP
"Ph. B." <philippe_N_O_._S_P_A_M_boucault@voila.fr> wrote in message
news:42df71b0$0$7811$626a14ce@news.free.fr...
Bonjour à tous
Bonjour,
Cela fait des années que j'utilise le langage SQL sous Access et
SQL_Server
et dernièrement Oracle 9.
Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT
JOIN.
C'est bien ! ;-)
Tu utilises les opératuers de la norme SQL2.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures
dans
la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas
cette
syntaxe.
Ne vient-elle pas d'un monde où une ancienne version d'Oracle est utilisée
(antérieure à la 9 si mes souvernirs sont bons) ?
Les 2 méthodes sont elle équivalentes ?
Tout dépend du parseur SQL et de son niveau de tolérance par rapport à la
norme.
A cela vient s'ajouter des pbs d'optimisation (sera ce optimisé avec
l'ancienne
syntaxe ?)...
Si non, laquelle est préférable ?
Ben naturellement, celle de la norme, donc celle que tu uilises... :-)
De plus, elle permet de dissocier les conditions de jointure des éventuels
critères de filtre et AMHA, amène plus de clarté dans la requête...
Merci
Pour plus de détails, on peut aussi regarder ici:
http://sqlpro.developpez.com/cours/sqlaz/jointures/
--
Philippe.
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Dans Oracle la syntaxe était (+)= et =(+) si ma méoire est bonne.
A +
lionelp a écrit:
Bonjour,
*= et =* correspondent aux jointures externes, cette syntaxe est déconseillée et ne fonctionne pas dans SQL Server 2005 par défaut (mode compatibilité 90). Dans Oracle la syntaxe était += et =+ si ma méoire est bonne.
Cordialement, LionelP
"Ph. B." wrote in message news:42df71b0$0$7811$
Bonjour à tous
Bonjour,
Cela fait des années que j'utilise le langage SQL sous Access et
SQL_Server
et dernièrement Oracle 9. Pour faire des jointures, j'utilise les INNER JOIN, LEFT JOIN ou RIGHT
JOIN.
C'est bien ! ;-) Tu utilises les opératuers de la norme SQL2.
Une nouvelle collègue n'utilise pas ce système, mais fait les jointures
dans
la clause WHERE en utilisant des =, *= ou =*. Je ne connaissais pas
cette
syntaxe.
Ne vient-elle pas d'un monde où une ancienne version d'Oracle est utilisée (antérieure à la 9 si mes souvernirs sont bons) ?
Les 2 méthodes sont elle équivalentes ?
Tout dépend du parseur SQL et de son niveau de tolérance par rapport à la
norme.
A cela vient s'ajouter des pbs d'optimisation (sera ce optimisé avec
l'ancienne
syntaxe ?)...
Si non, laquelle est préférable ?
Ben naturellement, celle de la norme, donc celle que tu uilises... :-) De plus, elle permet de dissocier les conditions de jointure des éventuels critères de filtre et AMHA, amène plus de clarté dans la requête...
Merci
Pour plus de détails, on peut aussi regarder ici: http://sqlpro.developpez.com/cours/sqlaz/jointures/
-- Philippe.
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************