Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Rv
Salut,
On peut essayer de remplacer la clause WHERE par une jointure du style:
SELECT Client.Groupe, ... FROM Client INNER JOIN Criteres_Groupes ON Client.Groupe = Criteres_Groupes.Groupe si Criteres_Groupes ne contient pas plusieurs enregistrements avec le même Groupe
ou
SELECT DISTINCT Client.Groupe, ... FROM Client INNER JOIN Criteres_Groupes ON Client.Groupe = Criteres_Groupes.Groupe si Criteres_Groupes contient plusieurs enregistrements avec le même Groupe. Eventuellement un regroupement...
voire
SELECT Client.Groupe, ... FROM Client INNER JOIN (SELECT DISTINCT Criteres_Groupes.Groupe FROM Criteres_Groupes) as sr ON Client.Groupe = sr.Groupe
Enfin, c'est une idée mais il manque quelques infos. Je ne garantie rien mais dites si cela marche.
A+
Rv
"pierref" a écrit dans le message de news:
Bonjour,
Voici une de mes requetes : SELECT Client.Groupe, ... FROM Client WHERE ((Client.Groupe) In (SELECT Groupe FROM Criteres_groupes));
Le IN (SELECT..) marche bien qd il y a peu de données mais est très lent lorsqu'il y a bcp de données. C'est le cas de la requete ci-dessus.
Y aurait il une alernative au IN (SELECT..) pour que l'execution de la requete soit plus rapide (pour un resultat identique).
Par avance merci
Pierre
Salut,
On peut essayer de remplacer la clause WHERE par une jointure du style:
SELECT Client.Groupe, ...
FROM Client
INNER JOIN Criteres_Groupes ON Client.Groupe = Criteres_Groupes.Groupe
si Criteres_Groupes ne contient pas plusieurs enregistrements avec le même
Groupe
ou
SELECT DISTINCT Client.Groupe, ...
FROM Client
INNER JOIN Criteres_Groupes ON Client.Groupe = Criteres_Groupes.Groupe
si Criteres_Groupes contient plusieurs enregistrements avec le même Groupe.
Eventuellement un regroupement...
voire
SELECT Client.Groupe, ...
FROM Client
INNER JOIN
(SELECT DISTINCT Criteres_Groupes.Groupe FROM Criteres_Groupes) as sr ON
Client.Groupe = sr.Groupe
Enfin, c'est une idée mais il manque quelques infos. Je ne garantie rien
mais dites si cela marche.
A+
Rv
"pierref" <pierref@discussions.microsoft.com> a écrit dans le message de
news:A3DFFA68-00BE-4123-8781-1D0BB0DCA8A3@microsoft.com...
Bonjour,
Voici une de mes requetes :
SELECT Client.Groupe, ...
FROM Client
WHERE ((Client.Groupe) In (SELECT Groupe FROM Criteres_groupes));
Le IN (SELECT..) marche bien qd il y a peu de données mais est très lent
lorsqu'il y a bcp de données. C'est le cas de la requete ci-dessus.
Y aurait il une alernative au IN (SELECT..) pour que l'execution de la
requete soit plus rapide (pour un resultat identique).
On peut essayer de remplacer la clause WHERE par une jointure du style:
SELECT Client.Groupe, ... FROM Client INNER JOIN Criteres_Groupes ON Client.Groupe = Criteres_Groupes.Groupe si Criteres_Groupes ne contient pas plusieurs enregistrements avec le même Groupe
ou
SELECT DISTINCT Client.Groupe, ... FROM Client INNER JOIN Criteres_Groupes ON Client.Groupe = Criteres_Groupes.Groupe si Criteres_Groupes contient plusieurs enregistrements avec le même Groupe. Eventuellement un regroupement...
voire
SELECT Client.Groupe, ... FROM Client INNER JOIN (SELECT DISTINCT Criteres_Groupes.Groupe FROM Criteres_Groupes) as sr ON Client.Groupe = sr.Groupe
Enfin, c'est une idée mais il manque quelques infos. Je ne garantie rien mais dites si cela marche.
A+
Rv
"pierref" a écrit dans le message de news:
Bonjour,
Voici une de mes requetes : SELECT Client.Groupe, ... FROM Client WHERE ((Client.Groupe) In (SELECT Groupe FROM Criteres_groupes));
Le IN (SELECT..) marche bien qd il y a peu de données mais est très lent lorsqu'il y a bcp de données. C'est le cas de la requete ci-dessus.
Y aurait il une alernative au IN (SELECT..) pour que l'execution de la requete soit plus rapide (pour un resultat identique).
Par avance merci
Pierre
Eric
Bonjour,
Je suppose d'après ton sql que certains clients ont des valeurs pour le champ groupe qui ne sont pas dans la table/requête Criteres_groupes.
En faisant simplement une jointure entre les tables Client et Criteres_groupes SELECT Client.groupe, ... FROM Client Inner Join Criteres_groupes ON Client.groupe=Criteres_groupes.Groupe
(ou encore un produit cartésien avec une condition de jinture mais bon, c'est rétro) SELECT Client.groupe, ... FROM Client, Criteres_groupes WHERE Client.groupe=Criteres_groupes.Groupe
J'ai bon ?
Bonjour,
Voici une de mes requetes : SELECT Client.Groupe, ... FROM Client WHERE ((Client.Groupe) In (SELECT Groupe FROM Criteres_groupes));
Le IN (SELECT..) marche bien qd il y a peu de données mais est très lent lorsqu'il y a bcp de données. C'est le cas de la requete ci-dessus.
Y aurait il une alernative au IN (SELECT..) pour que l'execution de la requete soit plus rapide (pour un resultat identique).
Par avance merci
Pierre
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
Je suppose d'après ton sql que certains clients ont des valeurs pour le
champ groupe qui ne sont pas dans la table/requête Criteres_groupes.
En faisant simplement une jointure entre les tables Client et
Criteres_groupes
SELECT Client.groupe, ...
FROM Client Inner Join Criteres_groupes
ON Client.groupe=Criteres_groupes.Groupe
(ou encore un produit cartésien avec une condition de jinture mais bon,
c'est rétro)
SELECT Client.groupe, ...
FROM Client, Criteres_groupes
WHERE Client.groupe=Criteres_groupes.Groupe
J'ai bon ?
Bonjour,
Voici une de mes requetes :
SELECT Client.Groupe, ...
FROM Client
WHERE ((Client.Groupe) In (SELECT Groupe FROM Criteres_groupes));
Le IN (SELECT..) marche bien qd il y a peu de données mais est très lent
lorsqu'il y a bcp de données. C'est le cas de la requete ci-dessus.
Y aurait il une alernative au IN (SELECT..) pour que l'execution de la
requete soit plus rapide (pour un resultat identique).
Par avance merci
Pierre
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je suppose d'après ton sql que certains clients ont des valeurs pour le champ groupe qui ne sont pas dans la table/requête Criteres_groupes.
En faisant simplement une jointure entre les tables Client et Criteres_groupes SELECT Client.groupe, ... FROM Client Inner Join Criteres_groupes ON Client.groupe=Criteres_groupes.Groupe
(ou encore un produit cartésien avec une condition de jinture mais bon, c'est rétro) SELECT Client.groupe, ... FROM Client, Criteres_groupes WHERE Client.groupe=Criteres_groupes.Groupe
J'ai bon ?
Bonjour,
Voici une de mes requetes : SELECT Client.Groupe, ... FROM Client WHERE ((Client.Groupe) In (SELECT Groupe FROM Criteres_groupes));
Le IN (SELECT..) marche bien qd il y a peu de données mais est très lent lorsqu'il y a bcp de données. C'est le cas de la requete ci-dessus.
Y aurait il une alernative au IN (SELECT..) pour que l'execution de la requete soit plus rapide (pour un resultat identique).
Par avance merci
Pierre
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
pierref
Merci à tous les deux.
J'ai finalement fait un "group by" Groupe dans la table criteres_groupes.
Puis dans ma requete j'utilise : where Client.Groupe = Criteres_Groupes.Groupe
Le résultat à l'air tout a fait correct. (je vais qd meme verifier ca en detail) Et ca va surtout bcp plus vite que le IN (SELECT ..).
A bientot
Pierre
Bonjour,
Voici une de mes requetes : SELECT Client.Groupe, ... FROM Client WHERE ((Client.Groupe) In (SELECT Groupe FROM Criteres_groupes));
Le IN (SELECT..) marche bien qd il y a peu de données mais est très lent lorsqu'il y a bcp de données. C'est le cas de la requete ci-dessus.
Y aurait il une alernative au IN (SELECT..) pour que l'execution de la requete soit plus rapide (pour un resultat identique).
Par avance merci
Pierre
Merci à tous les deux.
J'ai finalement fait un "group by" Groupe dans la table criteres_groupes.
Puis dans ma requete j'utilise :
where Client.Groupe = Criteres_Groupes.Groupe
Le résultat à l'air tout a fait correct. (je vais qd meme verifier ca en
detail)
Et ca va surtout bcp plus vite que le IN (SELECT ..).
A bientot
Pierre
Bonjour,
Voici une de mes requetes :
SELECT Client.Groupe, ...
FROM Client
WHERE ((Client.Groupe) In (SELECT Groupe FROM Criteres_groupes));
Le IN (SELECT..) marche bien qd il y a peu de données mais est très lent
lorsqu'il y a bcp de données. C'est le cas de la requete ci-dessus.
Y aurait il une alernative au IN (SELECT..) pour que l'execution de la
requete soit plus rapide (pour un resultat identique).