concaténation dans une jointure

concaténation dans une jointure - SQL/NoSQL - Programmation

Marsh Posté le 07-08-2014 à 11:18:42    

voila en ce qui concerne le code en SQL sous access 2010 :  
 
 

Code :
  1. SELECT *
  2. FROM
  3. ((( A LEFT JOIN B ON A.1 = B.2) LEFT JOIN C ON A.3 = C.3
  4. )LEFT JOIN E ON A.3 = E.4) LEFT JOIN (D LEFT JOIN E ON D.5 = E.6
  5. ) ON C.7 = '0' & D.8
  6. WHERE (((B.9)='19') AND ((B.10)='0') AND ((B.11)='XFI' Or (B.11)='' Or (B.11) Is Null))


 
je tente de faire une concaténation sur ' ON C.7 = '0' & D.8 ' mais elle n'est pas prise en compte
 
comment procéder ?
 
merci d'avance


Message édité par xorre le 07-08-2014 à 11:28:28
Reply

Marsh Posté le 07-08-2014 à 11:18:42   

Reply

Marsh Posté le 07-08-2014 à 15:16:17    

J'arrive pas à voir le rapport avec une jointure et une concaténation.


---------------
Viens jouer aux Rébus sur HFR
Reply

Marsh Posté le 07-08-2014 à 15:38:31    

la donnée est la même mais avec un 0 devant.
 
Pour que le left fonctionne correctement sur la donnée il me faut le rajouter

Reply

Marsh Posté le 07-08-2014 à 18:29:38    

Deja, comment tu sais que ton probleme vient de la concatenation et pas autre chose? As-tu des elements a charge autre que le doigt mouille?
 
Si c'est vraiment le cas, j'ai jamais utilise access mais vu que c'est du Microsoft, le premier truc que je verifierais c'est les types de donnees que tu compares. Excel par exemple ne se gene pas pour faire des conversions dans tous les sens. Genre si ton D.8 est un nombre, verifies que '0'&D.8 n'est pas immediatement re-caster en un nombre (auquel cas tu 'perds' le 0 immediatement).


---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 08-08-2014 à 13:27:19    

Salut,
je ne suis pas un pro d'Access, mais  
si ta concaténation ne marche pas... c'est que tu as un soucis comme dit Lasnoufle avec des valeurs pas de même type et donc il faut "caster" uniformément, supprimer les blancs...
 
tu peux essayer l'inverse aussi c'est à dire de faire faire une jointure sur la valeur de c.7 après ton zéro initiale... (substr(c.7), 1 , n)
 
Autremenent : en décorticant ton exemple :
tu n'aurais pas un join tout simplement qui aurait aussi sauté dans tes jointures:
 
1.SELECT *
2.FROM
(
(
( A LEFT JOIN B ON A.1 = B.2)
 LEFT JOIN C ON A.3 = C.3
 LEFT JOIN E ON A.3 = E.4)  
 LEFT JOIN  
(D LEFT JOIN E ON D.5 = E.6) ???
                       ON C.7 = '0' & D.8 ???
 
Tu n'aurais pas des soucis de parenthèses?  
Ta dernière jointure elle se fait sur quoi?
 
Guillaume


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

Marsh Posté le 12-08-2014 à 15:47:06    

Aucun problème et pas de Convert à réaliser étant donner que tous mes champs sont des textes.
 
c'est uniquement un problème au niveau de mes enregistrements dans ma table C7 la donnée est X1 et dans ma D8 j'ai la donnée 0X1.
 
Effectivement, bien que le substr ne fonctionne pas, je suis parti sur un left(right(C;a);b) pour récupérer uniquement ce qui m'intéresse de ma donnée
 
merci pour votre aide !
 
Le but sur ce left join est bien d'ajouter un 0 à ma donnée X1 pour que ma jointure se fasse correctement en fonction de cette donnée.
 
les joies d'access qui ne permettent pas de faire l'ensemble des jointures à la suite comme sous MSQL :S


Message édité par xorre le 12-08-2014 à 15:47:50
Reply

Sujets relatifs:

Leave a Replay

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