Jointure externe - SQL/NoSQL - Programmation
Marsh Posté le 25-04-2006 à 14:55:34
Code :
|
Marsh Posté le 25-04-2006 à 15:02:35
Merci pour ton aide mais ça ne marche pas.
Message d'erreur :
Code :
|
Marsh Posté le 02-05-2006 à 13:48:34
Code :
|
Marsh Posté le 02-05-2006 à 13:57:09
ça à l'air de marcher merci
Mais peux-tu m'expliquer la logique des parenthèses stp
Marsh Posté le 02-05-2006 à 15:46:04
Les tables sont jointes entre elles deux à deux.
Ne pas mettre de parenthese ci-dessus équivaut à faire sous Oracle un WHERE t1.id = t2.id = t3.id = t4.id ce qui est contraire à la logique du SQL.
Si tu met des parentheses, sous Access tu as les étapes suivantes :
Etape 1
t1 INNER JOIN t2 ON t1.id = t2.id
Te voila avec une nouvelle table fictive qui est le résultat de la jointure entre t1 et t2.
Etape 2
(t1.id INNER JOIN t2.id ON t1.id = t2.id) LEFT JOIN t3 ON t1.id = t3.id
Tu fais une jointure entre la nouvelle table obtenu à l'étape 1 et la table t3. Tu obtiens une nouvelle table fictive qui est le fruit de tes deux jointures successives.
Etape 3
((t1.id INNER JOIN t2.id ON t1.id = t2.id) LEFT JOIN t3 ON t1.id = t3.id) LEFT JOIN t4 ON t1.id = t4.id
Même explication qu'a l'étape 2.
En résumant tu es contraint sous Access de déterminer l'ordre dans lequel il executera tes produits de jointures par des parentheses !
En espérant que ce soit assez clair, car quand je me relis, j'en ai pas l'air !
Marsh Posté le 03-05-2006 à 15:23:53
Ok merci pour ces renseignement.
Sinon j'ai une autre petite question : comment je transforme la requête suivante pour utiliser des jointures ?
Code :
|
Marsh Posté le 03-05-2006 à 21:07:55
Personne ?
Marsh Posté le 04-05-2006 à 09:16:54
Tu peux faire un INNER JOIN entre Enregistrement et un UNION de tes deux requetes entre parentheses...par contre je comprend pas la logique de la manoeuvre, la requete que tu met juste au dessus ressort bien les résultats que tu veux ?
Marsh Posté le 05-05-2006 à 09:08:06
Voila ça sera peut-être plus simple à comprendre.
Donc en fait oui la requête me renvoit bien ce que je veux car en fait je cherche tous les enregistrements qui sont à la fois dans la table PANNE et dans la table VALEUR.
Pour exploiter cette BD, j'ai créé un formulaire avec différent choix possibles. Donc selon les choix, mes jointures vont être différentes. Donc je pensais faire un système pour construire ma requête du style :
Code :
|
Ce qui me permet de renseigner la variables Tables de la manière suivante par exemple :
Code :
|
Mais le problème c'est que apparament celà n'est pas possible puisqu'il faut définir un ordre de priorité pour les jointures avec les join. Par conséquent, je ne pourrais pas utiliser la méthode avec union.
Donc je ne sais pas si c'est une bonne idée mais je n'en vois pas d'autre, je pensais faire :
Code :
|
Marsh Posté le 09-05-2006 à 10:00:20
J'essaye de faire une requête qui me permet de récupérer les Id_enr de la table enregistrement dont les Id_enr sont à la fois dans les tables ETAT et PANNE mais je ni parvient pas. Cela fonctionne quand je met la table VALEUR et PANNE mais pas quand je rajoute la table ETAT.
Voici ce que cela donne :
Marsh Posté le 09-05-2006 à 10:29:05
Utilise l'interface graphique de Access; elle est faite justement pour ne pas se prendre la tête quand on ne maîtrise pas son langage SQL un peu spécifique.
Et quand ta requête est finalisée et fonctionnelle, tu affiches son code SQL et tu le copies dans ton code.
Marsh Posté le 09-05-2006 à 11:04:00
lol bin la capture d'écran que j'ai affiché, c'est en utilisant l'interface graphique...
Marsh Posté le 25-04-2006 à 14:13:36
Bonjour,
Voila je travail sous access et j'essaye de faire la requête suivante :
Mais d'après ce que j'ai cru comprendre en faisant quelques recherches sur le net le '(+)' fonctionne que sous oracle.
Donc comment je fais avec les join... car je ni comprend rien ?
Message édité par hacksi le 25-04-2006 à 14:14:07