OVH Cloud OVH Cloud

Sous-requête entrelacée

4 réponses
Avatar
Mona
Bonjour,

J'essaie de faire une sous-requête entrelacée dans Access et ca ne semble
pas fonctionner:

SELECT *
FROM t1
WHERE EXISTS(
SELECT *
FROM t2
WHERE t1.id1 = t2.id1
AND t1.id2 = t2.id2)

Access prend t1.id1 et t1.id2 comme des variables et me demande d'entrer les
valeurs. (Alors que id1 et id2 sont bien des champs dans t1).

Je sais que faire ce genre de requête dans les autres SGBD ca marche. Est ce
que Access ne permet pas de faire ca???

Si c'est vrai que ca ne marche pas? Comment faire pour obtenir ces resultats
d'une autre façon?

Merci

4 réponses

Avatar
Sylvain Lafontaine
Je n'ai jamais eu de problème dans le passé avec les sous-requêtes corrélées
sous Access. De toute façon, sans ce type de requête, l'usage de la
fonction Exists() deviendrait bidon.

Il est possible que votre problème proviennent de la double clef mais j'en
doute également. Cependant, à tout hasard, que donne le résultat si vous ne
testez que sur une seule variable?

S. L.

"Mona" <m_yazbeck(ZZZ)@hotmail.com> wrote in message
news:
Bonjour,

J'essaie de faire une sous-requête entrelacée dans Access et ca ne semble
pas fonctionner:

SELECT *
FROM t1
WHERE EXISTS(
SELECT *
FROM t2
WHERE t1.id1 = t2.id1
AND t1.id2 = t2.id2)

Access prend t1.id1 et t1.id2 comme des variables et me demande d'entrer
les
valeurs. (Alors que id1 et id2 sont bien des champs dans t1).

Je sais que faire ce genre de requête dans les autres SGBD ca marche. Est
ce
que Access ne permet pas de faire ca???

Si c'est vrai que ca ne marche pas? Comment faire pour obtenir ces
resultats
d'une autre façon?

Merci




Avatar
Mona
Bonjour!

Par magie ca marche soudainement, c'est assez bizarre. J'ai mis une mise à
jour de Jet avant, je sais pas si ca a pu influencer!?

Le seul problème, c'est que la requête prend à peu près 30 minutes à finir
et pourtant, il n'y a que 3500 resultats!

Merci

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Je n'ai jamais eu de problème dans le passé avec les sous-requêtes
corrélées

sous Access. De toute façon, sans ce type de requête, l'usage de la
fonction Exists() deviendrait bidon.

Il est possible que votre problème proviennent de la double clef mais j'en
doute également. Cependant, à tout hasard, que donne le résultat si vous
ne

testez que sur une seule variable?

S. L.

"Mona" <m_yazbeck(ZZZ)@hotmail.com> wrote in message
news:
Bonjour,

J'essaie de faire une sous-requête entrelacée dans Access et ca ne
semble


pas fonctionner:

SELECT *
FROM t1
WHERE EXISTS(
SELECT *
FROM t2
WHERE t1.id1 = t2.id1
AND t1.id2 = t2.id2)

Access prend t1.id1 et t1.id2 comme des variables et me demande d'entrer
les
valeurs. (Alors que id1 et id2 sont bien des champs dans t1).

Je sais que faire ce genre de requête dans les autres SGBD ca marche.
Est


ce
que Access ne permet pas de faire ca???

Si c'est vrai que ca ne marche pas? Comment faire pour obtenir ces
resultats
d'une autre façon?

Merci








Avatar
Sylvain Lafontaine
Créez un index double sur t2.id1 et t2.id2.

Si vous avez deux index séparés pour t2.id1 et t2.id2, Jet va prendre l'un
ou l'autre des deux index mais pas les deux à la fois.

S. L.

"Mona" <m_yazbeck(ZZZ)@hotmail.com> wrote in message
news:
Bonjour!

Par magie ca marche soudainement, c'est assez bizarre. J'ai mis une mise à
jour de Jet avant, je sais pas si ca a pu influencer!?

Le seul problème, c'est que la requête prend à peu près 30 minutes à finir
et pourtant, il n'y a que 3500 resultats!

Merci

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Je n'ai jamais eu de problème dans le passé avec les sous-requêtes
corrélées

sous Access. De toute façon, sans ce type de requête, l'usage de la
fonction Exists() deviendrait bidon.

Il est possible que votre problème proviennent de la double clef mais
j'en
doute également. Cependant, à tout hasard, que donne le résultat si vous
ne

testez que sur une seule variable?

S. L.

"Mona" <m_yazbeck(ZZZ)@hotmail.com> wrote in message
news:
Bonjour,

J'essaie de faire une sous-requête entrelacée dans Access et ca ne
semble


pas fonctionner:

SELECT *
FROM t1
WHERE EXISTS(
SELECT *
FROM t2
WHERE t1.id1 = t2.id1
AND t1.id2 = t2.id2)

Access prend t1.id1 et t1.id2 comme des variables et me demande
d'entrer
les
valeurs. (Alors que id1 et id2 sont bien des champs dans t1).

Je sais que faire ce genre de requête dans les autres SGBD ca marche.
Est


ce
que Access ne permet pas de faire ca???

Si c'est vrai que ca ne marche pas? Comment faire pour obtenir ces
resultats
d'une autre façon?

Merci












Avatar
Mona
t2 est une requête, donc je ne peux pas y mettre d'index...! Mais la table
sur laquelle ce base t2 à un index (id1, id2) ET un index (id2)





"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:%
Créez un index double sur t2.id1 et t2.id2.

Si vous avez deux index séparés pour t2.id1 et t2.id2, Jet va prendre l'un
ou l'autre des deux index mais pas les deux à la fois.

S. L.

"Mona" <m_yazbeck(ZZZ)@hotmail.com> wrote in message
news:
Bonjour!

Par magie ca marche soudainement, c'est assez bizarre. J'ai mis une mise
à


jour de Jet avant, je sais pas si ca a pu influencer!?

Le seul problème, c'est que la requête prend à peu près 30 minutes à
finir


et pourtant, il n'y a que 3500 resultats!

Merci

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
a


écrit dans le message de news:
Je n'ai jamais eu de problème dans le passé avec les sous-requêtes
corrélées

sous Access. De toute façon, sans ce type de requête, l'usage de la
fonction Exists() deviendrait bidon.

Il est possible que votre problème proviennent de la double clef mais
j'en
doute également. Cependant, à tout hasard, que donne le résultat si
vous



ne
testez que sur une seule variable?

S. L.

"Mona" <m_yazbeck(ZZZ)@hotmail.com> wrote in message
news:
Bonjour,

J'essaie de faire une sous-requête entrelacée dans Access et ca ne
semble


pas fonctionner:

SELECT *
FROM t1
WHERE EXISTS(
SELECT *
FROM t2
WHERE t1.id1 = t2.id1
AND t1.id2 = t2.id2)

Access prend t1.id1 et t1.id2 comme des variables et me demande
d'entrer
les
valeurs. (Alors que id1 et id2 sont bien des champs dans t1).

Je sais que faire ce genre de requête dans les autres SGBD ca marche.
Est


ce
que Access ne permet pas de faire ca???

Si c'est vrai que ca ne marche pas? Comment faire pour obtenir ces
resultats
d'une autre façon?

Merci