OVH Cloud OVH Cloud

Lien entre requête ?

5 réponses
Avatar
sab
Bonjour=20
Voici mon pb:=20
J'ai deux tables "Biens" et "Propositions" ou :
tables "Biens" : Liste de tous les biens
tables "Propositions" : liste des propositions de biens =20
effectu=E9es

J'aimerai conna=EEtre la m=E9thode pour pouvoir cr=E9er un=20
autre table et/ou requete afin d'avoir une liste de bien=20
non propos=E9.

Merci d'avance pour votre aide.

Sab.

5 réponses

Avatar
Pat07
Tu peux utiliser la requete de non correspondance
requête nouveau assistant requete de non correspondance
Patrick
"sab" a écrit dans le message de news:
2a9301c48e9e$7245a3c0$
Bonjour
Voici mon pb:
J'ai deux tables "Biens" et "Propositions" ou :
tables "Biens" : Liste de tous les biens
tables "Propositions" : liste des propositions de biens
effectuées

J'aimerai connaître la méthode pour pouvoir créer un
autre table et/ou requete afin d'avoir une liste de bien
non proposé.

Merci d'avance pour votre aide.

Sab.
Avatar
Gafish
Bonjour,

La requete suivante :

SELECT NumBien, NomBien
FROM Biens
WHERE NumBien NOT IN (SELECT DISTINCT NumBien FROM Proposition;)

en prenant NumBien comme identifiant unique des biens.

"sab" a écrit dans le message de
news:2a9301c48e9e$7245a3c0$
Bonjour
Voici mon pb:
J'ai deux tables "Biens" et "Propositions" ou :
tables "Biens" : Liste de tous les biens
tables "Propositions" : liste des propositions de biens
effectuées

J'aimerai connaître la méthode pour pouvoir créer un
autre table et/ou requete afin d'avoir une liste de bien
non proposé.

Merci d'avance pour votre aide.

Sab.
Avatar
guillaume
humm :
supposons que la clé de Bien soit idBien :
SELECT idBien
FROM BIEN
WHERE idBien NOT IN
(SELECT idBien
FROM Proposition
)
;
Mathématiques ensemblistes :
"Tous les biens" - "ceux proposés" = "ceux qui n'ont pas
été proposés"

-----Message d'origine-----
Bonjour
Voici mon pb:
J'ai deux tables "Biens" et "Propositions" ou :
tables "Biens" : Liste de tous les biens
tables "Propositions" : liste des propositions de biens
effectuées

J'aimerai connaître la méthode pour pouvoir créer un
autre table et/ou requete afin d'avoir une liste de bien
non proposé.

Merci d'avance pour votre aide.

Sab.


.



Avatar
Sylvain Lafontaine
En plus de l'opérateur « Not IN » mentionné dans les réponses précédentes,
vous pouvez également utiliser l'opérateur Not Exists:

SELECT *
FROM Bien
WHERE Not Exists
(SELECT * FROM Proposition Where Proposition.IdBien = Bien.IdBien)

S. L.

"sab" wrote in message
news:2a9301c48e9e$7245a3c0$
Bonjour
Voici mon pb:
J'ai deux tables "Biens" et "Propositions" ou :
tables "Biens" : Liste de tous les biens
tables "Propositions" : liste des propositions de biens
effectuées

J'aimerai connaître la méthode pour pouvoir créer un
autre table et/ou requete afin d'avoir une liste de bien
non proposé.

Merci d'avance pour votre aide.

Sab.
Avatar
Xavier HUE
Bonjour à tous,

Une petite info concernant les opérateurs IN et EXISTS.

Je travaille actuellement sur une application dans
laquelle j'ai quelques requêtes enregistrées contenant des
sélections d'enregistrements par IN ou NOT IN.
Les performances étaient médiocres.

J'ai donc remplacé ces sélections par des requêtes avec
jointure externe, et la, la performance est au rendez-vous.
Mes requêtes s'exécutent maintenant 100 fois plus vite!!
Là où j'avais des temps de réponses de 90 à 120 secondes,
je suis passé à 1 secondes.

Le temps d'exécution de ma procédure de mise à jour
quotidienne est passé de 15mn à 2mn30.

Je viens de tester à l'instant la syntaxe NOT EXISTS
proposée par Sylvain, et j'obtiens les mêmes temps qu'avec
un IN.

A titre d'info, voici le contexte:
Table1(Key1, Key2, Key3, Zone1, Zone2...) 1500 Enregs
Table2(Key1, Key2, Key3, Zone1, Zone2...) 45000 Enregs

Chacune des tables comporte une clé composée (K1, K2, k3),
il n'existe pas d'index sur les les zones individuelles
K1, k2, K3.
Le but de la requête est d'insérer les enregistrements de
Table1 manquant dans Table2.

INSERT INTO Table2 ( Key1, Key2, Key3, Z1, Z2)
SELECT [Table1].K1, [Table1].K2, [Table1].K3, [Table1].Z1,
[Table1].Z2
FROM Table1
WHERE K2 NOT IN(
SELECT K2 FROM Table2);
Temps d'exécution => pas loin de 120 secondes pour
atteindre le dernier enregistrement en mode feuille de
données.

La même avec jointure externe
INSERT INTO Table2 ( Key1, Key2, Key3, Z1, Z2)
SELECT [Table1].K1, [Table1].K2, [Table1].K3, [Table1].Z1,
[Table1].Z2
FROM Table1 LEFT JOIN Table2 ON [Table1].K1 = [Table2].K1
WHERE [Table2].K1 Is Null
Temps d'exécution => moins de 1 seconde pour atteindre le
dernier enregistrement en mode feuille de données.

MS Access semble ne pas aimer du tout les sous-requêtes.
Peut être un problème d'index...

Voilà, j'espère que ces informations serviront.
Cordialement.