Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
980 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  question simple sur requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

question simple sur requête

n°2225429
donny3
Posté le 17-04-2014 à 21:17:26  profilanswer
 

Salut,
 
J'aurai quelque question au sujet de l'écriture de requête SQL nouvelle norme à savoir sans le =.
 
Est-ce que l'équivalent de cette requête :

Citation :

SELECT * FROM A ,B
WHERE
A.ID = B.ID
AND A.CLASS='B'


 
correspond à ceci :

Citation :

SELECT * FROM  
A  
INNER JOIN
B
ON
A.ID = B.ID
WHERE A.CLASS='B'


 
ou ceci :

Citation :

SELECT * FROM  
A  
INNER JOIN
B
ON
A.ID = B.ID
AND A.CLASS='B'


 
et
est-ce que l'équivalent de cette requête :

Citation :

SELECT * FROM A ,B
WHERE
A.ID = B.ID(+)
AND B.ID(+) IS NULL


 
correspond à ceci :

Citation :

SELECT * FROM  
A  
LEFT OUTER JOIN
B
ON
A.ID = B.ID
WHERE B.ID IS NULL


 
ou ceci :

Citation :

SELECT * FROM  
A  
LEFT OUTER JOIN
B
ON
A.ID = B.ID
AND B.ID IS NULL


 
Merci à tous

mood
Publicité
Posté le 17-04-2014 à 21:17:26  profilanswer
 

n°2225455
rufo
Pas me confondre avec Lycos!
Posté le 18-04-2014 à 11:35:05  profilanswer
 

Les 3 premières requêtes sont équivalentes.
 
Pour les 3 suivantes, l'opérateur (+), c'est du oracle, je crois. N'en ayant jamais fait, je ne me prononcerais pas.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2225795
gpl73
Posté le 22-04-2014 à 23:20:38  profilanswer
 

c'est quoi cette nouvelle norme? cela concerne quel environnement?
 
les 2 premières propositions sont équivalentes sauf que dans la première tu fais du sql "propre", on va dire...
en mettant dans la jointure uniquement des clés ou champ de jointure et que dans la close where tu fais la sélection ...
dans le seconde : tu fais un peu tout en même temps, tu écris une jointure en y ajoutant une sélection...
Les  2 jointures te remonteront les mêmes données, mais avec des temps d'exécutions qui vont être différents... surtout si tu as des grosses tables...
 
Pour ce qui est de l'autre requête, pareil... je ne sais pas ce que c'est le (+)
mais les 2 autres left outer join sont "pas compris" en fait
quand tu écris :
select * (pour simplifier) from a left outer join b on a.id = b.id
(tu prends tous les enregistrements qui sont dans la table a et pas forcement dans la table b)
si tu mets: where b.id = null cela veut dire que l'id n'est pas trouver"...
donc plutôt de faire un left outer join, avec une selection  
tu fais un exception join et tu as tout de suite la bonne requête (plus simple à comprendre, non?)
select a.* from a exception join b on a.id = b.id
 
la seconde : letf outer join b on a.id= b.id and b.id is null...
sur AS400 (je ne sais pas si cela réagit vraiement pareil sur les autres plateformes)
remonte tout mais tu n'as aucune valeur des champs de b
 
NB.: J'avais vu ça déjà précement :
 
si tu as dans ta table a
id value
1  '1'
2  '2'
3  '3'  
 
dans la table b
id value
3  '3'
4  '4'
 
tu as un résultat différent si tu fais un
SELECT * FROM    
A                
LEFT OUTER JOIN  
B                
ON                
A.ID = B.ID    
cela remonte tout "normalement" comme un left outer join...
1 '1'  null null
2 '2'  null null
3 '3'   3   '3'
4 '4'   4    '4'
 
mais si tu ajoutes par exemple dans la jointure on, une selection sur un champ de la seconde table...
 
SELECT * FROM    
A                
LEFT OUTER JOIN  
B                
ON                
A.ID = B.ID    
and b.value ='4'  
cela les 3 lignes mais :
1 '1'  null null
2 '2'  null null
3 '3'  null null
4 '4'  4    '4'
 
Et ceci est différent de:
SELECT * FROM    
A                
LEFT OUTER JOIN  
B                
ON                
A.ID = B.ID    
where
b.value ='4'  
(qui correspondant en fait à un inner join)
 
 
 
 
 
Guillaume
 


Message édité par gpl73 le 23-04-2014 à 13:46:47

---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2225862
rufo
Pas me confondre avec Lycos!
Posté le 23-04-2014 à 14:11:48  profilanswer
 

gpl73, au sujet des temps d'exécution, ils ne seront pas forcément différents, surtout sur des requêtes aussi simple, l'optimiseur de requêtes du SGBD passant généralement par-là avant l'exécution d'une requête, en la réécrivant de la manière la plus optimale pour lui. ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2225902
gpl73
Posté le 23-04-2014 à 16:37:53  profilanswer
 

C'est une rumeur cette nouvelle norme? ou cela va se généraliser à l'ensemble des environnements SQL ?
Car il me semble bien que cela ne soit pas si nouveau, comme écriture de jointure, vu que dans ma jeunesse :), j'ai appris à les écrire comme ça mes premiers inner join....


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2225907
rufo
Pas me confondre avec Lycos!
Posté le 23-04-2014 à 16:49:01  profilanswer
 

De quelle norme parles-tu gpl73 ? Des jointures avec les "+" ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2225984
gpl73
Posté le 24-04-2014 à 08:12:52  profilanswer
 

bonjour, je parles de la "nouvelle norme" de donny3:
"J'aurai quelque question au sujet de l'écriture de requête SQL nouvelle norme à savoir sans le =. "
info ou intox?


---------------
mieux vaut être un con au chaud, qu'un con gelé lol

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  question simple sur requête

 

Sujets relatifs
Comment caluler le pourcentage du resultat dans la meme requete ?Nombre aléatoire, arraylist (quizz, question)
Requête SQL basée sur paramètre et table un peu étrangeRéponse "asp" à une une requete sql
Délai dépassé sur Requète SQLquestion urgente développement Java
question securité d'un site webRequête SQL - Question plutôt simple :p
requete SQL... petite question toute simple... Help pleaseQuestion REQUETE mySQL (simple... mais rapide)
Plus de sujets relatifs à : question simple sur requête


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR