Info sur +

Info sur + - SQL/NoSQL - Programmation

Marsh Posté le 01-07-2005 à 10:48:15    

Bonjour,
 
J'ai un probleme sur une requete, et quelqu'un m'a dit que la solution serait dans un opérateur  ( + ) ou ( - ), il ne se rappelle plus exactement comment cela fonctionne, et je n'en ai jamais entendu parler.
 
Si vous pouviez m'expliquer si cet opérateur existe, si vous connaissez son nom, et à quoi il correspond ? ( une recherche dans google avec + et - est pas évidente ... )
 
Merci d'avance !

Reply

Marsh Posté le 01-07-2005 à 10:48:15   

Reply

Marsh Posté le 01-07-2005 à 10:49:17    

Et la requête elle est ou?
 


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 01-07-2005 à 10:55:37    

J'ai du mal m'expliquer : Ma question ne se pose pas sur la requete, mais sur un éventuel opérateur "( + )" ou "( - )" qui existerait, et dont je n'ai jamais entendu parler.
 
Je voudrai juste savoir à quoi cela correspond. Je vérifirai apres que c'est une solution appropriée à mon probleme.

Reply

Marsh Posté le 01-07-2005 à 10:58:29    

tekbright a écrit :

J'ai du mal m'expliquer : Ma question ne se pose pas sur la requete, mais sur un éventuel opérateur "( + )" ou "( - )" qui existerait, et dont je n'ai jamais entendu parler.
 
Je voudrai juste savoir à quoi cela correspond. Je vérifirai apres que c'est une solution appropriée à mon probleme.


 
Faire des additions et des soustractions ??? hors contexte et sans le type de base ni la requete ni ce que tu veux faire, peux pas etre plus precis...

Reply

Marsh Posté le 01-07-2005 à 11:02:41    

Sous Sybase on peut concatener des chaînes avec '+'.
Mais sinon, clair que sans plus d'information, ça va être dur.  [:petrus75]

Reply

Marsh Posté le 01-07-2005 à 11:05:43    

sous oracle -- ca met en commentaire :)
 
precise ou moins sous quel sgbd tu es ?

Reply

Marsh Posté le 01-07-2005 à 11:06:15    

Bon, j essaye de préciser.
J'ai une requete qui prend des info sur des tables A,B et C.
Dans ma requete, si l'info est dans les trois tables, c'est bon, mais sinon, elle n'afficher rien ( genre elle n'est que dans A et B, etc).
Donc on m'a di qu'il y aurait une sorte d'opérateur, du genre :
where a.champ = b.champ (+) and a.champ = c.champ  
et que le (+) permetterait d'éviter que la jointure "bloque" les résultats si celle-ci n'existe pas.
 
Si c'est toujours pas clair, dite le, j'ai un peu de mal a expliquer ce que je veux.

Reply

Marsh Posté le 01-07-2005 à 11:08:10    

Je suis sous
 
 
 
access.  :(  
 
Donc je n'ai jamais entendu parler de cette fonctionalité, et si elle existe, il y a des grandes chance qu'elle ne marche pas sous access, mais bon, j essaye quand meme.
 
 
 

Reply

Marsh Posté le 01-07-2005 à 11:29:19    

Sous Oracle, ça permet de faire des jointures externes.
 
Exemple:
 
SELECT A.VALUE, B.VALUE FROM A, B
WHERE A.ID = B.ID(+);
 
Ca renvoie toutes les valeurs du champ VALUE dans A, et si l'ID de A existe dans B, alors ça renvoie aussi la valeur du champ VALUE dans B.

Reply

Marsh Posté le 01-07-2005 à 11:34:42    

ok, exactement ce qu'il me fallait.
Reste plus qu'a vérifier que ca marche dans access... ce dont je doute fortement.
 
Merci beacoup !  :jap:  

Reply

Marsh Posté le 01-07-2005 à 11:34:42   

Reply

Marsh Posté le 01-07-2005 à 11:37:17    

Il me semble que c'est une syntaxe propre à Oracle.
 
Dans la plupart des autres SGBD, on utilise LEFT JOIN.

Reply

Marsh Posté le 01-07-2005 à 11:47:23    

Oui, c'est que j'était en train de regarder, reste plus qu'à l appliquer à mon probleme.
 
Merci encore !

Reply

Marsh Posté le 01-07-2005 à 11:51:35    

et le (-) n'existe pas :)

Reply

Marsh Posté le 01-07-2005 à 11:52:33    

beegee > ça marche aussi sous postgre, et sql server utilise *= et =* à la place (avec l'* du côté opposé de là où on met le (+) sous Oracle, c'est pratique comme truc :D)

Reply

Marsh Posté le 01-07-2005 à 14:30:31    

Bon, maintenant je galere sur Left join
 
Quand je met ceci :

Code :
  1. select *
  2. from table1,table2
  3. left join table1 on table1.champB = table2.champB


 
il me mets "Expression de jointure non suporté"
 
Une idée pour parrer à ceci ?  ( c'est juste deux table relié par "champB" )


Message édité par tekbright le 01-07-2005 à 14:30:45
Reply

Marsh Posté le 01-07-2005 à 15:46:30    

Normalement ce serait plutôt :
 
select *
from table1
left join table2 on table2.champB = table1.champB
 
C'est la syntaxe mySql, je sais pas ce que ça donne sous Access ...

Reply

Marsh Posté le 01-07-2005 à 15:55:17    

c'est la même

Reply

Marsh Posté le 01-07-2005 à 17:05:55    

@arjuna => tu est sûr que le (+) marche aussi sous postgre ??  
depuis quelle version ??

Reply

Marsh Posté le 01-07-2005 à 17:10:18    

hmmmm... je peux pas l'affirmer à 100%, parceque j'en ai pas sous la main, mais il me semble que j'en ai fait y'a pas longtemps. mais c'est possible que je me plante, tout comme c'est possible que ça vienne d'un package additionnel (c'est pas moi qui l'ai installé)

Reply

Marsh Posté le 01-07-2005 à 17:11:09    

en tout cas, si c'est pas le (+), alors c'est le =* qu'il supporte, je suis sûr et certain qu'il en supporte un des deux.

Reply

Marsh Posté le 01-07-2005 à 17:12:46    

tout comme il supporte le "complete outer join", que ne supportent ni Oracle ni SQL Server, alors que c'est dans la norme SQL :
 
toutes les lignes de A avec ou sans B et toutes les lignes de B avec ou sans A
 
Avec SQL Server, faut faire ça à la place :
 

Code :
  1. select a.a, b.b
  2. from a, b
  3. where a =* b
  4. union
  5. select a.a, b.b
  6. from a, b
  7. where a *= b

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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