PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Jointure HyperFile
Jointure HyperFile
Débuté par marc laville, 30 aoû. 2006 16:30 - 4 réponses
Posté le 30 août 2006 - 16:30
Bonjour,

Voici mon probleme (HyperFile)

J'ai une table INTEGCOMMANDE (IDINTEGCOMMANDE,IntegCoddest, IntegDatlivinf, IntegLieudest, IntegCodprod) avec une cle composee (IntegCoddest,IntegCodprod) qui contient 114 Enregistrements,
et une table ECLATEMENT (EclatCodeDest, EclatCodeArt, EclatAgence) avec une clef composee (EclatCodeDest, EclatCodeArt)

Je souhaite récupèrer l'ensemble des enregistrements de la table INTEGCOMMANDE avec la rubrique ECLATEMENT.EclatAgence en jointant sur mes clefs composées.

Ca donne (avec l'editeur de requete):
SELECT
INTEGCOMMANDE.IDINTEGCOMMANDE AS IDINTEGCOMMANDE,
ECLATEMENT.EclatAgence AS EclatAgence,
INTEGCOMMANDE.IntegCoddest AS IntegCoddest,
INTEGCOMMANDE.IntegCodprod AS IntegCodprod
FROM
ECLATEMENT RIGHT OUTER JOIN INTEGCOMMANDE ON ECLATEMENT.EclatCodeDestEclatCodeArt = INTEGCOMMANDE.IntegCoddestIntegCodprod"

Or je n'obtients que 98 lignes résultats.

Quelle est donc la syntaxe pour récupèrer TOUS les enregistrement d'une table ?

Merci d'avance
Posté le 30 août 2006 - 19:29
Bonjour,

Première chose, il faudrait lire l'aide un peu plus précisément, car il y est noté en remarque : " Remarque : Les jointures externes RIGHT OUTER JOIN et FULL OUTER JOIN ne sont pas utilisables sur une source de données de type Hyper File."

En conséquence, je noterai la requête de cette manière:

SELECT
INTEGCOMMANDE.IDINTEGCOMMANDE AS IDINTEGCOMMANDE,
ECLATEMENT.EclatAgence AS EclatAgence,
INTEGCOMMANDE.IntegCoddest AS IntegCoddest,
INTEGCOMMANDE.IntegCodprod AS IntegCodprod
FROM
INTEGCOMMANDE LEFT OUTER JOIN ECLATEMENT ON ECLATEMENT.EclatCodeDestEclatCodeArt = INTEGCOMMANDE.IntegCoddestIntegCodprod

Tine smoi au courant pour savoir si cela fonctionne,

Bon dev,

Philippe
Posté le 01 septembre 2006 - 12:11
Bonjour et merci de t'intéresser à mon problème.

A noter, si je tape texto ta syntaxe, puis que je demande une rétro-analyse, l'éditeur de requête la réécrit en utilisant :
"FROM ECLATEMENT RIGHT OUTER JOIN INTEGCOMMANDE ON ..."

En fait, la syntaxeque tu propose me donne le même résultat, à savoir que je ne recupère que les enregistrements de ma première table qui n'ont pas de correspondance dans la deuxième (EclatAgence à NULL dans notre exemple).

J'ai essayé d'écrire ma condition de jointure en utilisant deux clef au lieu d'une clef composée :
"FROM INTEGCOMMANDE left OUTER JOIN ECLATEMENT ON EclatCodeArt = IntegCodprod AND EclatCodeDest=IntegCoddest"
mais çà ne fonctionne pas non plus.

marc
Posté le 04 septembre 2006 - 10:38
As tu essayé d'executer ta requête directement dans le wdsql ?
Posté le 16 octobre 2006 - 19:22
Bonjour,

j'aimerais vous apporter une réponse mais j'ai moi aussi le problème.
Apparemment Windev ne sait pas gérer les jointures externes sur une clé composée.
Une solution est malheureusement de dupliquer les composantes de la clé dans le fichier
et de d'effectuer la liaison sur celles ci.
Mais peut etre avez vous trouvé une meilleure solution.
Si c'est le cas ce serait gentil de m'en faire profiter.

Alban
alachambre@mbautomotive.com