Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme de liaison dans table liee

2 réponses
Avatar
olivier
Je repose ma question car je pense que je me suis mal exprime.
Je vais essayer d'etre plus clair :

une premiere table : travaux
- num_travail
- status
- description_demande
- description_effectue
- prix

une deuxieme table : explicatif_etendu
(on y met les texte explicatifs des travaux.
- num_travail
- parent_description
- texte

Dans parent_description , on met le nom du champ qui est etendu:
par exemple si parent_description =3D 'description_demandee', j'ai un
texte qui etend le champ description_demandee.
Quelquefois on a une extention du champ de decription_demande ou / et
description_effectue / ou rien du tout...

Pour resumer dans la table explicatif_etendu je peux avoir 0 / 1 / 2
fiches liees par le num_travail.

Mon probleme est que je voudrai lister tous les travaux de la table
travaux, avec le contenu de la table explicatif_etendu qui ont
seulement la valeur 'description_demandee' dans le champ
parent_description.

Facile vous me direz :
.=2E. LEFT JOIN explicatif_etendu ON travaux.num_travail =3D
explicatif_etendu.num_travail) ... where
explicatif_etendu.parent_description=3D'description_demande'.

cela fonctionne , pour tous les travaux qui ont bien
'description_demande' , mais il ne me liste pas les travaux qui n'ont
PAS de description. ( donc pas de fiche liee dans la table
explicatif_etendu).
Si je ne met pas de condition
explicatif_etendu.parent_description=3D'description_demande', j'ai des
lignes en doublon pour le travaux qui ont
explicatif_etendu.parent_description=3D'description_demande' ET
explicatif_etendu.parent_description=3D'description_effectue'.

Il me faudrait pour dire :
explicatif_etendu.parent_description=3D'description_demande' et
explicatif_etendu.parent_description=3Dnothing.


Je ne sais pas si j'ai ete clair , et je ne peux pas modifier la
structure des tables :-((

Amicalement=20

G=E9o

2 réponses

Avatar
pgz
Ponjour,
Ge crois que ton pb est bien tordu. Mais solution peut-être il y a!
Si tu veux faire un formulaire, c'est facile les compléments se présentent
dans un SF.
Si tu veux absolument une requête voici une vilaine astuce:
Tu montes les deux tables mais en cassant le lien entre les num_travail.
dans la table 2 des extensions, il faut un enregistrement vide, disons celui
qui a pour ID le num 1.
Conditions à exprimer sur table 2
ID = 1 OU ( Num_Travail = Table1.Num_Travail ET parent_description =
'description-demande'.
Zalut, et bonne chance.
pgz


Je repose ma question car je pense que je me suis mal exprime.
Je vais essayer d'etre plus clair :

une premiere table : travaux
- num_travail
- status
- description_demande
- description_effectue
- prix

une deuxieme table : explicatif_etendu
(on y met les texte explicatifs des travaux.
- num_travail
- parent_description
- texte

Dans parent_description , on met le nom du champ qui est etendu:
par exemple si parent_description = 'description_demandee', j'ai un
texte qui etend le champ description_demandee.
Quelquefois on a une extention du champ de decription_demande ou / et
description_effectue / ou rien du tout...

Pour resumer dans la table explicatif_etendu je peux avoir 0 / 1 / 2
fiches liees par le num_travail.

Mon probleme est que je voudrai lister tous les travaux de la table
travaux, avec le contenu de la table explicatif_etendu qui ont
seulement la valeur 'description_demandee' dans le champ
parent_description.

Facile vous me direz :
.... LEFT JOIN explicatif_etendu ON travaux.num_travail > explicatif_etendu.num_travail) ... where
explicatif_etendu.parent_description='description_demande'.

cela fonctionne , pour tous les travaux qui ont bien
'description_demande' , mais il ne me liste pas les travaux qui n'ont
PAS de description. ( donc pas de fiche liee dans la table
explicatif_etendu).
Si je ne met pas de condition
explicatif_etendu.parent_description='description_demande', j'ai des
lignes en doublon pour le travaux qui ont
explicatif_etendu.parent_description='description_demande' ET
explicatif_etendu.parent_description='description_effectue'.

Il me faudrait pour dire :
explicatif_etendu.parent_description='description_demande' et
explicatif_etendu.parent_description=nothing.


Je ne sais pas si j'ai ete clair , et je ne peux pas modifier la
structure des tables :-((

Amicalement

Géo




Avatar
olivier
et bien en relisant mon envoi , j'ai eu une illumination si ca
interesse quelqu'un :-)

- l'astuce etait de mettre la condition dans le LEFT JOINT et non dans
le WHERE !!
...LEFT JOIN dbo_longdescription ON (travaux.num_travail =
explicatif_etendu.num_travail and
parent_description='description_demandee')
ainsi meme les ligne qui n'ont pas de de description sont retournee par
le LEFT JOIN.

Merci quand meme pour l'astuce !!

Amicalement


Géo