SR2
Messages postés46Date d'inscriptionsamedi 17 juillet 2004StatutMembreDernière intervention25 juillet 2006
-
6 févr. 2006 à 19:23
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
7 févr. 2006 à 23:48
voici mon problème
je souhaiterai réaliser la meme opération qu'avec cette requete mais en utilisant des jointures INNER JOIN
pour eviter toutes ces sous requetes
c'est a dire pouvoir sortir le nom et le prenom pour un agent en une seule sous requete ou jointure sans etre obligé d'effectuer
deux sous requetes
merci à tous pour votre aide
MA_REQUETE = _
"SELECT *, " + _
"(SELECT PRENOM FROM BASE_AGENT WHERE (BASE_AGENT.N_AGENT=BASE_MOUVEMENTS.N_AGENT_ORIGINE_MOUVEMENT)) AS PRENOM, " + _
"(SELECT NOM FROM BASE_AGENT WHERE (BASE_AGENT.N_AGENT=BASE_MOUVEMENTS.N_AGENT_ORIGINE_MOUVEMENT)) AS NOM, " + _
"(SELECT PRENOM FROM BASE_AGENT WHERE (BASE_AGENT.N_AGENT=BASE_MOUVEMENTS.N_AGENT_RESPONSABLE_MOUVEMENT)) AS PRENOM2, " + _
"(SELECT NOM FROM BASE_AGENT WHERE (BASE_AGENT.N_AGENT=BASE_MOUVEMENTS.N_AGENT_RESPONSABLE_MOUVEMENT))AS NOM2" + _
" FROM BASE_MOUVEMENTS " + _
" WHERE (N°_INDEX_PIECE=" + N_PIECE + ")"
SR2
Messages postés46Date d'inscriptionsamedi 17 juillet 2004StatutMembreDernière intervention25 juillet 20061 7 févr. 2006 à 00:27
le souci c'est que je fais une double jointure sur la meme table donc je ne comprends pas le base_agent2 ou alors
c'est "INNER JOIN BASE_AGENT BASE_AGENT2" en creant un alias ?
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 7 févr. 2006 à 08:36
Salut,
Oui c'est une double jointure. (J'ai oublié de mettre la table source ;-(
et c'est un alias de table
tu mets
tableSource tableAlias
et la clause de jointure est utilise la tableAlias.
C'est le même topo pour les tables hierarchique.
Exemple
Gestion des salarie d'une entreprise (avec un responsable)
Gestion d'un menu exemple menu de codesources ;-)
SR2
Messages postés46Date d'inscriptionsamedi 17 juillet 2004StatutMembreDernière intervention25 juillet 20061 7 févr. 2006 à 23:11
oui pour des raisons pratiques je developpe l'appli sous acces en local mais normalement elle tournera sous postgresql
Malheuresement le ° passe tres bien mais je crois que c réellement la double jointure qui pose probleme
car la requete avec une jointure passe impec.
sinon, mais je crois que cela n'est pas possible, ce serai de réaliser une sous requete mais avec en sortie 2 colonnes et non
une colonne par sous requête (NOM ET PRENOM dans une seule sous requete, puis une deuxieme avec NOM2 ET PRENOM2)!!
Mais je t'avoue que la c pourtant simple comme requete mais je ne comprends pas pourquoi ca coince
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 7 févr. 2006 à 23:48
Salut,
Essaye la requete sur postgres car sous access, il est plus capricieux.
Pour les jointures
il faut des parantheses alors que sous sqlserver il y a pas besoin de parantheses . c'est plus cool ;-)
Pour postgres le langage sql, n'est pas le tout à faire le même.
Alors developpe les requetes sous postgres et tu seras peut etre que ca passe.
tous les moteurs sql ont leur particularité et aucun ne respecte les standards sql a 100%. et access est loin de les respecter comme la plus part des bases commerciales. (sinon le monde sera trop beau '-)
je crois qu'il faut parantheseses les niveau de jointures en les imbricant sous access.
ex (jointure inner join (jointure inner join (jointure)))
je trouve ca bizarre.