Signification expression SQL

Signification expression SQL - SQL/NoSQL - Programmation

Marsh Posté le 23-04-2008 à 09:48:23    

Bonjour a tous,
 
Petite question mais qui me bloque pour comprendre des requêtes SQL. Ques signifie le "(+)" dans une requête? Par exemple idToto(+)=idTutu?
 
Je vous remercie pour l'aide que vous pourrez m'apporter, je n'ai rien trouvé sur le net  :??:  
 
Bonne journée

Reply

Marsh Posté le 23-04-2008 à 09:48:23   

Reply

Marsh Posté le 23-04-2008 à 10:23:07    

Un opérateur += ?
 
Sauf erreur de ma part, c'est pas du SQL standard, tu utilises quelle base de données ?

Reply

Marsh Posté le 23-04-2008 à 10:27:52    

Elmoricq a écrit :

Un opérateur += ?
 
Sauf erreur de ma part, c'est pas du SQL standard, tu utilises quelle base de données ?


 
 
J'utilise Oracle sous Toad. Cela permet de faire une contrainte dans une requête de type SELECT mais je ne vois pas ce que cela apporte réelement (bien que si je l'enlève, j'ai plus les même résultats)
 
Merci de m'avoir répondu!

Reply

Marsh Posté le 23-04-2008 à 10:35:29    

ca correspond a un left outer join
 

Code :
  1. select *
  2. from a,b
  3. where a.id = b.id(+)


 
est équivalent a:
 

Code :
  1. select *
  2. from a
  3. left outer join b on a.id = b.id


 
je l'utilisais au début, me disant que cela allait être plus compacte, plus lisible tout ca, mais pour ma part j'en suis revenu, l'avantage des joins ansi est que tu sépares bien tes clauses de join de tes clause de filtrage, et pas un gros melting pot ou on ne capte juste plus ce que fait le where des que l'on travaille sur 6-7 tables avec 5-6 filtres

Reply

Marsh Posté le 23-04-2008 à 10:43:16    

Merci beaucoup pour cette réponse! Je vais pouvoir enfin avancer dans mon boulot. J'aurais peut etre d'autres questions, alors restez dans le coin!  ;)  
 
Encore merci

Reply

Marsh Posté le 23-04-2008 à 11:59:27    

C'est encore moi!
 
J'aimerais savoir si sous Oracle la syntaxe "OUTER JOIN" passe, parce que quand j'essaye de faire une requête dessus il ne veut pas l'executer. Je suis sous Toad
 
Merci pour vos réponses

Reply

Marsh Posté le 23-04-2008 à 15:00:58    

ajoute left devant

Reply

Marsh Posté le 23-04-2008 à 15:19:25    

J'ai deja essayer avec left ou right, mais je crois que ma version d'oracle (8) ne le prend pas en compte. Tant pis, je vais rester avec mes (+)!  :pt1cable:
 
 
Merci de ton aide!

Reply

Marsh Posté le 25-04-2008 à 14:03:07    

Elmoricq a écrit :

Un opérateur += ?
 
Sauf erreur de ma part, c'est pas du SQL standard, tu utilises quelle base de données ?


:lol:
 
je comprends mieux pourquoi je me fais jeter de cette force dans les topics C [:cerveau love]  
 
(+) est la syntaxe raccourcie d'Oracle pour faire des jointures externes.
 
A noter que le (+) n'est normalement pas collé au signe = mais en suffixe du champ utilisé pour la jointure "champ1 (+)= champ2" est donc valide, mais pas "champ1 =(+) champ2" qui s'écrit "champ1 = champ2(+)"
 
Avec SQL Server, l'équivalent c'est *= et =* et cette fois le * est bel et bien collé au signe =.
 
Dans tous les cas, il vaut mieux utiliser la syntaxe verbeuse de la norme SQL, à moins que les normes de devs sur votre projet ne vous l'interdisent. En effet, Oracle < 8i ne supportait pas ou mal la syntaxe verbeuse, donc fallait faire avec les moyens du bord. Pour cette raison, nombre d'anciens projets Oracle interdisent au niveau norme de développement la syntaxe verbeuse (pourtant bien moins limitée et plus lisible).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed