OVH Cloud OVH Cloud

Evolution de règles

8 réponses
Avatar
Stéphane Lavergne
Bonjour,

J'ai 2 tables T1 et T2.

J'ai 1 relation entre ces 2 tables,
de la clef primaire de T1,
vers la clef secondaire de T2 ;
avec intégrité référentielle,
de type un à plusieurs.


En effet, jusqu'à aujourd'hui, les règles était :

1 enregistrement de T1 peut avoir 0 à plusieurs enregistrements liés dans
T2.
1 enregistrement de T2 est toujours lié au moins à 1 enregistrements de T1.


Hélàs, aujourd'hui, la 2ème règle a évoluée ainsi :
1 enregistrement de T2 peut ne pas à être lié à 1 enregistrement de T1.


Quelles sont les différentes possibilités qui puissent résoudre mon problème
?

Merci d'avance.

--
Cordialement,

Stéphane Lavergne

8 réponses

Avatar
Jessy SEMPERE
Bonjour
En effet, jusqu'à aujourd'hui, les règles était :
1 enregistrement de T1 peut avoir 0 à plusieurs enregistrements
liés dans T2.
1 enregistrement de T2 est toujours lié au moins à 1 enregistrements de
T1.

Hélàs, aujourd'hui, la 2ème règle a évoluée ainsi :
1 enregistrement de T2 peut ne pas à être lié à 1 enregistrement de T1.


Dans ton cas, ta relation reste correcte, le seul truc est que tu
dois retirer l'intégrité référentielle et normalement ce sera bon...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------

Avatar
Stéphane Lavergne
Bonjour,

Si je ne fais que retirer l'intégrité référentielle,
je pourrais saisir des enregistrements dans T1 sans qu'il y ait
obligtoirement de lien dans T2 (pour l'instant, ça me convient bien).
Je pourrais également saisir des enregistrements dans T2 sans qu'il y ait
obligtoirement de lien dans T1 (pour l'instant, ça me convient bien aussi).
Mais dans ma requête, cela ne sortira que les enregistrements de T1 ayant 1
lien dans T2.

En fait, j'ai oublié de le préciser...
j'aurais besoin de sortir tous les enregistrements de T1 ayant 1 lien dans
T2,
mais aussi tous les enregistrements de T1 n'ayant pas de lien dans T2
(apparement, c'est 1 option de la relation, qui crée 1 flèche),
mais aussi, également, tous les enregistrements de T2 n'ayant pas de lien
dans T1 (apparement, c'est 1 autre option de la relation, qui crée 1 flèche
dans l'autre sens).

Pouvez-vous m'aider svp?

Stéphane


"Jessy SEMPERE" a écrit dans le message de
news:bm0k9s$fop$
Bonjour
En effet, jusqu'à aujourd'hui, les règles était :
1 enregistrement de T1 peut avoir 0 à plusieurs enregistrements
liés dans T2.
1 enregistrement de T2 est toujours lié au moins à 1 enregistrements de
T1.

Hélàs, aujourd'hui, la 2ème règle a évoluée ainsi :
1 enregistrement de T2 peut ne pas à être lié à 1 enregistrement de T1.


Dans ton cas, ta relation reste correcte, le seul truc est que tu
dois retirer l'intégrité référentielle et normalement ce sera bon...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------





Avatar
Jessy SEMPERE
Bonjour

Ben si tu veux tous les enregistrements de T1 y compris ceux qui sont
liés de T2, il faut lorsque tu crée ta requête, faire un double click sur la
relation entre tes 2 tables et choisir :
"Inclure tous les enregistrements de T1..."

Par contre tu ne pourras pas afficher dans la même requête,
les enrgistrements de T2 qui ne sont pas référencé dans T1
Pour ça, il faudra passer par une requête...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Stéphane Lavergne" a écrit dans le message news:

Bonjour,

Si je ne fais que retirer l'intégrité référentielle,
je pourrais saisir des enregistrements dans T1 sans qu'il y ait
obligtoirement de lien dans T2 (pour l'instant, ça me convient bien).
Je pourrais également saisir des enregistrements dans T2 sans qu'il y ait
obligtoirement de lien dans T1 (pour l'instant, ça me convient bien
aussi).

Mais dans ma requête, cela ne sortira que les enregistrements de T1 ayant
1

lien dans T2.

En fait, j'ai oublié de le préciser...
j'aurais besoin de sortir tous les enregistrements de T1 ayant 1 lien dans
T2,
mais aussi tous les enregistrements de T1 n'ayant pas de lien dans T2
(apparement, c'est 1 option de la relation, qui crée 1 flèche),
mais aussi, également, tous les enregistrements de T2 n'ayant pas de lien
dans T1 (apparement, c'est 1 autre option de la relation, qui crée 1
flèche

dans l'autre sens).

Pouvez-vous m'aider svp?

Stéphane


"Jessy SEMPERE" a écrit dans le message de
news:bm0k9s$fop$
Bonjour
En effet, jusqu'à aujourd'hui, les règles était :
1 enregistrement de T1 peut avoir 0 à plusieurs enregistrements
liés dans T2.
1 enregistrement de T2 est toujours lié au moins à 1 enregistrements
de



T1.
Hélàs, aujourd'hui, la 2ème règle a évoluée ainsi :
1 enregistrement de T2 peut ne pas à être lié à 1 enregistrement de
T1.




Dans ton cas, ta relation reste correcte, le seul truc est que tu
dois retirer l'intégrité référentielle et normalement ce sera bon...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------









Avatar
Jessy SEMPERE
Voici une alternative qui correspond peut-être au résultat voulu...

SELECT T1.ChampT1, T1.ChampT2
FROM T1 LEFT JOIN T2 ON T1.ChampT2 = T2.ChampT2;
UNION SELECT T1.ChampT1, T2.ChampT2
FROM T1 RIGHT JOIN T2 ON T1.ChampT2 = T2.ChampT2
WHERE (((T1.ChampT1) Is Null));

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jessy SEMPERE" a écrit dans le message news:
bm15cq$qi9$
Bonjour

Ben si tu veux tous les enregistrements de T1 y compris ceux qui sont
liés de T2, il faut lorsque tu crée ta requête, faire un double click sur
la

relation entre tes 2 tables et choisir :
"Inclure tous les enregistrements de T1..."

Par contre tu ne pourras pas afficher dans la même requête,
les enrgistrements de T2 qui ne sont pas référencé dans T1
Pour ça, il faudra passer par une requête...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Stéphane Lavergne" a écrit dans le message news:

Bonjour,

Si je ne fais que retirer l'intégrité référentielle,
je pourrais saisir des enregistrements dans T1 sans qu'il y ait
obligtoirement de lien dans T2 (pour l'instant, ça me convient bien).
Je pourrais également saisir des enregistrements dans T2 sans qu'il y
ait


obligtoirement de lien dans T1 (pour l'instant, ça me convient bien
aussi).

Mais dans ma requête, cela ne sortira que les enregistrements de T1
ayant


1
lien dans T2.

En fait, j'ai oublié de le préciser...
j'aurais besoin de sortir tous les enregistrements de T1 ayant 1 lien
dans


T2,
mais aussi tous les enregistrements de T1 n'ayant pas de lien dans T2
(apparement, c'est 1 option de la relation, qui crée 1 flèche),
mais aussi, également, tous les enregistrements de T2 n'ayant pas de
lien


dans T1 (apparement, c'est 1 autre option de la relation, qui crée 1
flèche

dans l'autre sens).

Pouvez-vous m'aider svp?

Stéphane


"Jessy SEMPERE" a écrit dans le message de
news:bm0k9s$fop$
Bonjour
En effet, jusqu'à aujourd'hui, les règles était :
1 enregistrement de T1 peut avoir 0 à plusieurs enregistrements
liés dans T2.
1 enregistrement de T2 est toujours lié au moins à 1 enregistrements
de



T1.
Hélàs, aujourd'hui, la 2ème règle a évoluée ainsi :
1 enregistrement de T2 peut ne pas à être lié à 1 enregistrement de
T1.




Dans ton cas, ta relation reste correcte, le seul truc est que tu
dois retirer l'intégrité référentielle et normalement ce sera bon...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------













Avatar
Stéphane Lavergne
Re Bonjour,

Merci Jessy pour tes propositions.

Pour ça, il faudra passer par une requête...
Je n'arrive pas à savoir quelle requête fait çà.


si je fais 1 requete avec Inclure tous les enregistrements de T1
union
1 autre requete avec Inclure tous les enregistrement de T2,
je vais avoir en double les enregistrements ayant 1 lien entre T1 et T2

à moins que...
est-ce cette solution pourrait marcher ? :
1 requete avec Inclure tous les enregistrements de T1
union
1 autre requete Non correspondance de T1 dans T2

(Je vais chercher de ce côté...)

Stéphane

"Jessy SEMPERE" a écrit dans le message de
news:bm15cq$qi9$
Bonjour

Ben si tu veux tous les enregistrements de T1 y compris ceux qui sont
liés de T2, il faut lorsque tu crée ta requête, faire un double click sur
la

relation entre tes 2 tables et choisir :
"Inclure tous les enregistrements de T1..."

Par contre tu ne pourras pas afficher dans la même requête,
les enrgistrements de T2 qui ne sont pas référencé dans T1
Pour ça, il faudra passer par une requête...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Stéphane Lavergne" a écrit dans le message news:

Bonjour,

Si je ne fais que retirer l'intégrité référentielle,
je pourrais saisir des enregistrements dans T1 sans qu'il y ait
obligtoirement de lien dans T2 (pour l'instant, ça me convient bien).
Je pourrais également saisir des enregistrements dans T2 sans qu'il y
ait


obligtoirement de lien dans T1 (pour l'instant, ça me convient bien
aussi).

Mais dans ma requête, cela ne sortira que les enregistrements de T1
ayant


1
lien dans T2.

En fait, j'ai oublié de le préciser...
j'aurais besoin de sortir tous les enregistrements de T1 ayant 1 lien
dans


T2,
mais aussi tous les enregistrements de T1 n'ayant pas de lien dans T2
(apparement, c'est 1 option de la relation, qui crée 1 flèche),
mais aussi, également, tous les enregistrements de T2 n'ayant pas de
lien


dans T1 (apparement, c'est 1 autre option de la relation, qui crée 1
flèche

dans l'autre sens).

Pouvez-vous m'aider svp?

Stéphane


"Jessy SEMPERE" a écrit dans le message de
news:bm0k9s$fop$
Bonjour
En effet, jusqu'à aujourd'hui, les règles était :
1 enregistrement de T1 peut avoir 0 à plusieurs enregistrements
liés dans T2.
1 enregistrement de T2 est toujours lié au moins à 1 enregistrements
de



T1.
Hélàs, aujourd'hui, la 2ème règle a évoluée ainsi :
1 enregistrement de T2 peut ne pas à être lié à 1 enregistrement de
T1.




Dans ton cas, ta relation reste correcte, le seul truc est que tu
dois retirer l'intégrité référentielle et normalement ce sera bon...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------













Avatar
Stéphane Lavergne
Merci Jessy !!!

Je sens que çà doit être ça :)

Stéphane

"Jessy SEMPERE" a écrit dans le message de
news:bm15q9$qsg$
Voici une alternative qui correspond peut-être au résultat voulu...

SELECT T1.ChampT1, T1.ChampT2
FROM T1 LEFT JOIN T2 ON T1.ChampT2 = T2.ChampT2;
UNION SELECT T1.ChampT1, T2.ChampT2
FROM T1 RIGHT JOIN T2 ON T1.ChampT2 = T2.ChampT2
WHERE (((T1.ChampT1) Is Null));

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jessy SEMPERE" a écrit dans le message news:
bm15cq$qi9$
Bonjour

Ben si tu veux tous les enregistrements de T1 y compris ceux qui sont
liés de T2, il faut lorsque tu crée ta requête, faire un double click
sur


la
relation entre tes 2 tables et choisir :
"Inclure tous les enregistrements de T1..."

Par contre tu ne pourras pas afficher dans la même requête,
les enrgistrements de T2 qui ne sont pas référencé dans T1
Pour ça, il faudra passer par une requête...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Stéphane Lavergne" a écrit dans le message news:

Bonjour,

Si je ne fais que retirer l'intégrité référentielle,
je pourrais saisir des enregistrements dans T1 sans qu'il y ait
obligtoirement de lien dans T2 (pour l'instant, ça me convient bien).
Je pourrais également saisir des enregistrements dans T2 sans qu'il y
ait


obligtoirement de lien dans T1 (pour l'instant, ça me convient bien
aussi).

Mais dans ma requête, cela ne sortira que les enregistrements de T1
ayant


1
lien dans T2.

En fait, j'ai oublié de le préciser...
j'aurais besoin de sortir tous les enregistrements de T1 ayant 1 lien
dans


T2,
mais aussi tous les enregistrements de T1 n'ayant pas de lien dans T2
(apparement, c'est 1 option de la relation, qui crée 1 flèche),
mais aussi, également, tous les enregistrements de T2 n'ayant pas de
lien


dans T1 (apparement, c'est 1 autre option de la relation, qui crée 1
flèche

dans l'autre sens).

Pouvez-vous m'aider svp?

Stéphane


"Jessy SEMPERE" a écrit dans le message de
news:bm0k9s$fop$
Bonjour
En effet, jusqu'à aujourd'hui, les règles était :
1 enregistrement de T1 peut avoir 0 à plusieurs enregistrements
liés dans T2.
1 enregistrement de T2 est toujours lié au moins à 1
enregistrements





de
T1.
Hélàs, aujourd'hui, la 2ème règle a évoluée ainsi :
1 enregistrement de T2 peut ne pas à être lié à 1 enregistrement
de





T1.

Dans ton cas, ta relation reste correcte, le seul truc est que tu
dois retirer l'intégrité référentielle et normalement ce sera bon...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------

















Avatar
Xavier HUE
Bonjour Stéphane,

Si je ne fais que retirer l'intégrité référentielle,
je pourrais saisir des enregistrements dans T1 sans qu'il
y ait

obligtoirement de lien dans T2 (pour l'instant, ça me
convient bien).

Je pourrais également saisir des enregistrements dans T2
sans qu'il y ait

obligtoirement de lien dans T1 (pour l'instant, ça me
convient bien aussi).

Mais dans ma requête, cela ne sortira que les
enregistrements de T1 ayant 1

lien dans T2.


Donc pour l'instant c'est OK.

En fait, j'ai oublié de le préciser...
j'aurais besoin de sortir tous les enregistrements de T1
ayant 1 lien dans

T2,
mais aussi tous les enregistrements de T1 n'ayant pas de
lien dans T2

(apparement, c'est 1 option de la relation, qui crée 1
flèche),

mais aussi, également, tous les enregistrements de T2
n'ayant pas de lien

dans T1 (apparement, c'est 1 autre option de la relation,
qui crée 1 flèche

dans l'autre sens).


Pour faire ceci, ce n'est plus au niveau des relations
qu'il faut travailler, mais dans les requêtes mêmes, en
faisant des jointures externes gauche ou droite (ce qui
correspond aux options 2 ou 3 dans le type de relation).

Exemple:
Dans le requêteur, ajoute les tables T1 et T2. Access
ajoute les relations automatiquement.
Double clic chacun des liens pour les changer en "options
2 ou 3".

Il te faudra faire 2 requêtes.
- Une pour tous les enregistrements de T1 et seulement
ceux de T2 correspondant
- Une pour tous les enregistrements de T2 et seulement
ceux de T1 correspondant

Pour voir le tout ensemble, une requête UNION rassemblant
les données de tes 2 requêtes précédentes.

Cordialement.

Avatar
Stéphane Lavergne
Merci aussi à Xavier :)

Je modifie juste la 2e requête pour ne pas avoir les enregistrements déjà
présents dans la 1ere requête (ceux où T1=T2)

Cela donne la même chose que la proposition de Jessy et cela me semble
logique

Stéphane


"Xavier HUE" a écrit dans le message de
news:072501c38da7$d8e1d700$
Bonjour Stéphane,

Si je ne fais que retirer l'intégrité référentielle,
je pourrais saisir des enregistrements dans T1 sans qu'il
y ait

obligtoirement de lien dans T2 (pour l'instant, ça me
convient bien).

Je pourrais également saisir des enregistrements dans T2
sans qu'il y ait

obligtoirement de lien dans T1 (pour l'instant, ça me
convient bien aussi).

Mais dans ma requête, cela ne sortira que les
enregistrements de T1 ayant 1

lien dans T2.


Donc pour l'instant c'est OK.

En fait, j'ai oublié de le préciser...
j'aurais besoin de sortir tous les enregistrements de T1
ayant 1 lien dans

T2,
mais aussi tous les enregistrements de T1 n'ayant pas de
lien dans T2

(apparement, c'est 1 option de la relation, qui crée 1
flèche),

mais aussi, également, tous les enregistrements de T2
n'ayant pas de lien

dans T1 (apparement, c'est 1 autre option de la relation,
qui crée 1 flèche

dans l'autre sens).


Pour faire ceci, ce n'est plus au niveau des relations
qu'il faut travailler, mais dans les requêtes mêmes, en
faisant des jointures externes gauche ou droite (ce qui
correspond aux options 2 ou 3 dans le type de relation).

Exemple:
Dans le requêteur, ajoute les tables T1 et T2. Access
ajoute les relations automatiquement.
Double clic chacun des liens pour les changer en "options
2 ou 3".

Il te faudra faire 2 requêtes.
- Une pour tous les enregistrements de T1 et seulement
ceux de T2 correspondant
- Une pour tous les enregistrements de T2 et seulement
ceux de T1 correspondant

Pour voir le tout ensemble, une requête UNION rassemblant
les données de tes 2 requêtes précédentes.

Cordialement.