Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Adrien Gaudel
Rein à voir, mais toutes en majuscules c'est un peu compliqué à suivre ! Tu peux pas appliquer une convention de nommage afin de rendre tes requettes plus lisibles ? En principe les mots clé SQL sont en majuscule pour qu'il se detachent bien des noms de champ qui eux restent en minuscule.
Sinon je suis fin nul en jointure et je laisse toujours access faire celle que j'ai besoin... donc je vais pas beaucoup t'aider sur ce coup là.
"Nicolas" a écrit dans le message de news:00c101c3bf3d$5d9bfcc0$ Mon problème est le suivant, il y a 2 facon d'écrire une jointure en SQL :
La 1ère générée par ACCESS :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE INNER JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
La seconde, plus simple:
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE, F_COMPTET WHERE F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
Jusque là pas de problème. Ca se complique avec une jointure droite ou gauche
Voici la requête générée par Access pour une jointure gauche :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE LEFT JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM;
Je cherche la manière simple d'écrire cette requête mais je n'ai pas trouvé.
Si des gens ont la solution ...
Merci d'avance
Nicolas
Rein à voir, mais toutes en majuscules c'est un peu compliqué à suivre ! Tu
peux pas appliquer une convention de nommage afin de rendre tes requettes
plus lisibles ?
En principe les mots clé SQL sont en majuscule pour qu'il se detachent bien
des noms de champ qui eux restent en minuscule.
Sinon je suis fin nul en jointure et je laisse toujours access faire celle
que j'ai besoin... donc je vais pas beaucoup t'aider sur ce coup là.
"Nicolas" <nicolasheurtevin@wanadoo.fr> a écrit dans le message de
news:00c101c3bf3d$5d9bfcc0$a301280a@phx.gbl...
Mon problème est le suivant, il y a 2 facon d'écrire une
jointure en SQL :
La 1ère générée par ACCESS :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE
FROM F_DOCENTETE INNER JOIN F_COMPTET ON
F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
La seconde, plus simple:
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE
FROM F_DOCENTETE, F_COMPTET
WHERE F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
Jusque là pas de problème. Ca se complique avec une
jointure droite ou gauche
Voici la requête générée par Access pour une jointure
gauche :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE
FROM F_DOCENTETE LEFT JOIN F_COMPTET ON
F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM;
Je cherche la manière simple d'écrire cette requête mais
je n'ai pas trouvé.
Rein à voir, mais toutes en majuscules c'est un peu compliqué à suivre ! Tu peux pas appliquer une convention de nommage afin de rendre tes requettes plus lisibles ? En principe les mots clé SQL sont en majuscule pour qu'il se detachent bien des noms de champ qui eux restent en minuscule.
Sinon je suis fin nul en jointure et je laisse toujours access faire celle que j'ai besoin... donc je vais pas beaucoup t'aider sur ce coup là.
"Nicolas" a écrit dans le message de news:00c101c3bf3d$5d9bfcc0$ Mon problème est le suivant, il y a 2 facon d'écrire une jointure en SQL :
La 1ère générée par ACCESS :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE INNER JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
La seconde, plus simple:
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE, F_COMPTET WHERE F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
Jusque là pas de problème. Ca se complique avec une jointure droite ou gauche
Voici la requête générée par Access pour une jointure gauche :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE LEFT JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM;
Je cherche la manière simple d'écrire cette requête mais je n'ai pas trouvé.
Si des gens ont la solution ...
Merci d'avance
Nicolas
Cyril
La première syntaxe (celle générée par ACCESS) correspond à une requête SQL ANSI99 (SQL-3) alors que la seconde (celle que tu considère plus simple) respecte la norme SQL ANSI92 (SQL-2).
La syntaxe SQL concernant les jointures n'a été normalisé et implémenté que depuis le SQL ANSI99. Avant cette normalisation on traité les jointures de la manière suivant:
- Jointure "Classique": En algèbre relationnel une jointure correspond à un produit cartésion (FROM Table1, Table2) suivi d'une restriction (WHERE <prédicat>). Pour une équi-jointure, le prédicat est de la forme (WHERE Table1.Champ1 = Table2.Champ1). Mais on peux tout aussi bien faire une inéqui-jointure, c'est à dire: remplacer le = par un autre opérateur (!=, <, >)
- Jointure "Externe" Correspond à une jointure gauche (Left Join), ou à une jointure droite (Right Join), ou encore à jointure complète (Outter Join). Ce concept n'étant pas normalisé en SQL ANSI92, chaques éditeurs de bases de données complétaient le langage SQL par sa propre syntaxe. Par exemple pour Oracle (à l'exeception des version 9i et suivante qui implémente le SQL ANSI99) ta troisième syntaxe devra être écrite comme suit:
SELECT f_docentete.do_piece, f_comptet.ct_intitule FROM f_doentete, f_comptet WHERE f_doentete.do_tiers = f_comptet.ct_num (+);
En conclusion: C'est pour ces raisons que tu dispose de deux syntaxes possible pour une jointure classique et que par contre il n'existe sous access qu'une syntaxe possible pour une jointure externe.
Cyril.
-----Message d'origine----- Mon problème est le suivant, il y a 2 facon d'écrire une jointure en SQL :
La 1ère générée par ACCESS :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE INNER JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
La seconde, plus simple:
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE, F_COMPTET WHERE F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
Jusque là pas de problème. Ca se complique avec une jointure droite ou gauche
Voici la requête générée par Access pour une jointure gauche :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE LEFT JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM;
Je cherche la manière simple d'écrire cette requête mais je n'ai pas trouvé.
Si des gens ont la solution ...
Merci d'avance
Nicolas .
La première syntaxe (celle générée par ACCESS) correspond
à une requête SQL ANSI99 (SQL-3) alors que la seconde
(celle que tu considère plus simple) respecte la norme SQL
ANSI92 (SQL-2).
La syntaxe SQL concernant les jointures n'a été normalisé
et implémenté que depuis le SQL ANSI99. Avant cette
normalisation on traité les jointures de la manière
suivant:
- Jointure "Classique":
En algèbre relationnel une jointure correspond à un
produit cartésion (FROM Table1, Table2) suivi d'une
restriction (WHERE <prédicat>). Pour une équi-jointure, le
prédicat est de la forme (WHERE Table1.Champ1 =
Table2.Champ1). Mais on peux tout aussi bien faire une
inéqui-jointure, c'est à dire: remplacer le = par un autre
opérateur (!=, <, >)
- Jointure "Externe"
Correspond à une jointure gauche (Left Join), ou à une
jointure droite (Right Join), ou encore à jointure
complète (Outter Join). Ce concept n'étant pas normalisé
en SQL ANSI92, chaques éditeurs de bases de données
complétaient le langage SQL par sa propre syntaxe. Par
exemple pour Oracle (à l'exeception des version 9i et
suivante qui implémente le SQL ANSI99) ta troisième
syntaxe devra être écrite comme suit:
SELECT f_docentete.do_piece, f_comptet.ct_intitule
FROM f_doentete, f_comptet
WHERE f_doentete.do_tiers = f_comptet.ct_num (+);
En conclusion:
C'est pour ces raisons que tu dispose de deux syntaxes
possible pour une jointure classique et que par contre il
n'existe sous access qu'une syntaxe possible pour une
jointure externe.
Cyril.
-----Message d'origine-----
Mon problème est le suivant, il y a 2 facon d'écrire une
jointure en SQL :
La 1ère générée par ACCESS :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE
FROM F_DOCENTETE INNER JOIN F_COMPTET ON
F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
La seconde, plus simple:
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE
FROM F_DOCENTETE, F_COMPTET
WHERE F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
Jusque là pas de problème. Ca se complique avec une
jointure droite ou gauche
Voici la requête générée par Access pour une jointure
gauche :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE
FROM F_DOCENTETE LEFT JOIN F_COMPTET ON
F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM;
Je cherche la manière simple d'écrire cette requête mais
je n'ai pas trouvé.
La première syntaxe (celle générée par ACCESS) correspond à une requête SQL ANSI99 (SQL-3) alors que la seconde (celle que tu considère plus simple) respecte la norme SQL ANSI92 (SQL-2).
La syntaxe SQL concernant les jointures n'a été normalisé et implémenté que depuis le SQL ANSI99. Avant cette normalisation on traité les jointures de la manière suivant:
- Jointure "Classique": En algèbre relationnel une jointure correspond à un produit cartésion (FROM Table1, Table2) suivi d'une restriction (WHERE <prédicat>). Pour une équi-jointure, le prédicat est de la forme (WHERE Table1.Champ1 = Table2.Champ1). Mais on peux tout aussi bien faire une inéqui-jointure, c'est à dire: remplacer le = par un autre opérateur (!=, <, >)
- Jointure "Externe" Correspond à une jointure gauche (Left Join), ou à une jointure droite (Right Join), ou encore à jointure complète (Outter Join). Ce concept n'étant pas normalisé en SQL ANSI92, chaques éditeurs de bases de données complétaient le langage SQL par sa propre syntaxe. Par exemple pour Oracle (à l'exeception des version 9i et suivante qui implémente le SQL ANSI99) ta troisième syntaxe devra être écrite comme suit:
SELECT f_docentete.do_piece, f_comptet.ct_intitule FROM f_doentete, f_comptet WHERE f_doentete.do_tiers = f_comptet.ct_num (+);
En conclusion: C'est pour ces raisons que tu dispose de deux syntaxes possible pour une jointure classique et que par contre il n'existe sous access qu'une syntaxe possible pour une jointure externe.
Cyril.
-----Message d'origine----- Mon problème est le suivant, il y a 2 facon d'écrire une jointure en SQL :
La 1ère générée par ACCESS :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE INNER JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
La seconde, plus simple:
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE, F_COMPTET WHERE F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
Jusque là pas de problème. Ca se complique avec une jointure droite ou gauche
Voici la requête générée par Access pour une jointure gauche :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE LEFT JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM;
Je cherche la manière simple d'écrire cette requête mais je n'ai pas trouvé.
Si des gens ont la solution ...
Merci d'avance
Nicolas .
+The_Taco+
Exactement, et si j'étais toi, je me tournerais vers les jointures, les performances y sont beaucoup plus optimisées qu'un paquet de WHERE et c'est plus beau à lire ;)
"Cyril" a écrit dans le message de news:02cc01c3bf6a$cb8140b0$ La première syntaxe (celle générée par ACCESS) correspond à une requête SQL ANSI99 (SQL-3) alors que la seconde (celle que tu considère plus simple) respecte la norme SQL ANSI92 (SQL-2).
La syntaxe SQL concernant les jointures n'a été normalisé et implémenté que depuis le SQL ANSI99. Avant cette normalisation on traité les jointures de la manière suivant:
- Jointure "Classique": En algèbre relationnel une jointure correspond à un produit cartésion (FROM Table1, Table2) suivi d'une restriction (WHERE <prédicat>). Pour une équi-jointure, le prédicat est de la forme (WHERE Table1.Champ1 Table2.Champ1). Mais on peux tout aussi bien faire une inéqui-jointure, c'est à dire: remplacer le = par un autre opérateur (!=, <, >)
- Jointure "Externe" Correspond à une jointure gauche (Left Join), ou à une jointure droite (Right Join), ou encore à jointure complète (Outter Join). Ce concept n'étant pas normalisé en SQL ANSI92, chaques éditeurs de bases de données complétaient le langage SQL par sa propre syntaxe. Par exemple pour Oracle (à l'exeception des version 9i et suivante qui implémente le SQL ANSI99) ta troisième syntaxe devra être écrite comme suit:
SELECT f_docentete.do_piece, f_comptet.ct_intitule FROM f_doentete, f_comptet WHERE f_doentete.do_tiers = f_comptet.ct_num (+);
En conclusion: C'est pour ces raisons que tu dispose de deux syntaxes possible pour une jointure classique et que par contre il n'existe sous access qu'une syntaxe possible pour une jointure externe.
Cyril.
-----Message d'origine----- Mon problème est le suivant, il y a 2 facon d'écrire une jointure en SQL :
La 1ère générée par ACCESS :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE INNER JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
La seconde, plus simple:
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE, F_COMPTET WHERE F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
Jusque là pas de problème. Ca se complique avec une jointure droite ou gauche
Voici la requête générée par Access pour une jointure gauche :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE LEFT JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM;
Je cherche la manière simple d'écrire cette requête mais je n'ai pas trouvé.
Si des gens ont la solution ...
Merci d'avance
Nicolas .
Exactement, et si j'étais toi, je me tournerais vers les jointures, les
performances y sont beaucoup plus optimisées qu'un paquet de WHERE et c'est
plus beau à lire ;)
"Cyril" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:02cc01c3bf6a$cb8140b0$a501280a@phx.gbl...
La première syntaxe (celle générée par ACCESS) correspond
à une requête SQL ANSI99 (SQL-3) alors que la seconde
(celle que tu considère plus simple) respecte la norme SQL
ANSI92 (SQL-2).
La syntaxe SQL concernant les jointures n'a été normalisé
et implémenté que depuis le SQL ANSI99. Avant cette
normalisation on traité les jointures de la manière
suivant:
- Jointure "Classique":
En algèbre relationnel une jointure correspond à un
produit cartésion (FROM Table1, Table2) suivi d'une
restriction (WHERE <prédicat>). Pour une équi-jointure, le
prédicat est de la forme (WHERE Table1.Champ1 Table2.Champ1). Mais on peux tout aussi bien faire une
inéqui-jointure, c'est à dire: remplacer le = par un autre
opérateur (!=, <, >)
- Jointure "Externe"
Correspond à une jointure gauche (Left Join), ou à une
jointure droite (Right Join), ou encore à jointure
complète (Outter Join). Ce concept n'étant pas normalisé
en SQL ANSI92, chaques éditeurs de bases de données
complétaient le langage SQL par sa propre syntaxe. Par
exemple pour Oracle (à l'exeception des version 9i et
suivante qui implémente le SQL ANSI99) ta troisième
syntaxe devra être écrite comme suit:
SELECT f_docentete.do_piece, f_comptet.ct_intitule
FROM f_doentete, f_comptet
WHERE f_doentete.do_tiers = f_comptet.ct_num (+);
En conclusion:
C'est pour ces raisons que tu dispose de deux syntaxes
possible pour une jointure classique et que par contre il
n'existe sous access qu'une syntaxe possible pour une
jointure externe.
Cyril.
-----Message d'origine-----
Mon problème est le suivant, il y a 2 facon d'écrire une
jointure en SQL :
La 1ère générée par ACCESS :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE
FROM F_DOCENTETE INNER JOIN F_COMPTET ON
F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
La seconde, plus simple:
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE
FROM F_DOCENTETE, F_COMPTET
WHERE F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
Jusque là pas de problème. Ca se complique avec une
jointure droite ou gauche
Voici la requête générée par Access pour une jointure
gauche :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE
FROM F_DOCENTETE LEFT JOIN F_COMPTET ON
F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM;
Je cherche la manière simple d'écrire cette requête mais
je n'ai pas trouvé.
Exactement, et si j'étais toi, je me tournerais vers les jointures, les performances y sont beaucoup plus optimisées qu'un paquet de WHERE et c'est plus beau à lire ;)
"Cyril" a écrit dans le message de news:02cc01c3bf6a$cb8140b0$ La première syntaxe (celle générée par ACCESS) correspond à une requête SQL ANSI99 (SQL-3) alors que la seconde (celle que tu considère plus simple) respecte la norme SQL ANSI92 (SQL-2).
La syntaxe SQL concernant les jointures n'a été normalisé et implémenté que depuis le SQL ANSI99. Avant cette normalisation on traité les jointures de la manière suivant:
- Jointure "Classique": En algèbre relationnel une jointure correspond à un produit cartésion (FROM Table1, Table2) suivi d'une restriction (WHERE <prédicat>). Pour une équi-jointure, le prédicat est de la forme (WHERE Table1.Champ1 Table2.Champ1). Mais on peux tout aussi bien faire une inéqui-jointure, c'est à dire: remplacer le = par un autre opérateur (!=, <, >)
- Jointure "Externe" Correspond à une jointure gauche (Left Join), ou à une jointure droite (Right Join), ou encore à jointure complète (Outter Join). Ce concept n'étant pas normalisé en SQL ANSI92, chaques éditeurs de bases de données complétaient le langage SQL par sa propre syntaxe. Par exemple pour Oracle (à l'exeception des version 9i et suivante qui implémente le SQL ANSI99) ta troisième syntaxe devra être écrite comme suit:
SELECT f_docentete.do_piece, f_comptet.ct_intitule FROM f_doentete, f_comptet WHERE f_doentete.do_tiers = f_comptet.ct_num (+);
En conclusion: C'est pour ces raisons que tu dispose de deux syntaxes possible pour une jointure classique et que par contre il n'existe sous access qu'une syntaxe possible pour une jointure externe.
Cyril.
-----Message d'origine----- Mon problème est le suivant, il y a 2 facon d'écrire une jointure en SQL :
La 1ère générée par ACCESS :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE INNER JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
La seconde, plus simple:
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE, F_COMPTET WHERE F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM
Jusque là pas de problème. Ca se complique avec une jointure droite ou gauche
Voici la requête générée par Access pour une jointure gauche :
SELECT F_DOCENTETE.DO_PIECE, F_COMPTET.CT_INTITULE FROM F_DOCENTETE LEFT JOIN F_COMPTET ON F_DOCENTETE.DO_TIERS = F_COMPTET.CT_NUM;
Je cherche la manière simple d'écrire cette requête mais je n'ai pas trouvé.