Requête "ET' qui ne fonctionne pas
Fermé
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
-
Modifié par jordane45 le 28/04/2015 à 10:58
SILBA31 Messages postés 37 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 27 mai 2015 - 29 avril 2015 à 14:20
SILBA31 Messages postés 37 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 27 mai 2015 - 29 avril 2015 à 14:20
A voir également:
- Requête "ET' qui ne fonctionne pas
- Requête sql date supérieure à ✓ - Forum Programmation
- Requête sql pix - Forum Python
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de pomme mais pas de pomme de terre ? - Forum Thunderbird
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ? ✓ - Forum Loisirs / Divertissements
9 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
28 avril 2015 à 10:59
28 avril 2015 à 10:59
Bonjour les clauses ON se mettent APRES CHAQUE jointure .. pas à la suite des unes des autres.....
SELECT * FROM tbl1 LEFT JOIN tbl2 ON tbl1.toto = tbl2.titi INNER JOIN tbl3 ON tbl3.truc = tbl1.bidule ...
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
28 avril 2015 à 11:37
28 avril 2015 à 11:37
Bonjour,
les requêtes SQL sont générées par l'assistant de création de requêtes d'ACCESS. Lorsque j'essaie de les modifier comme tu le suggère j'ai une erreur de syntaxe qui apparait.
les requêtes SQL sont générées par l'assistant de création de requêtes d'ACCESS. Lorsque j'essaie de les modifier comme tu le suggère j'ai une erreur de syntaxe qui apparait.
Utilisateur anonyme
Modifié par le père. le 28/04/2015 à 11:44
Modifié par le père. le 28/04/2015 à 11:44
Bonjour
Il te faut un OR et non pas un AND dans ton WHERE.
Avec un AND, tu demandes que [Architectures-besoins].Besoin soit simultanément égal à "In-Flight connectivity" et à "ACARS communication", ce qui n'est pas possible.
Il te faut un OR et non pas un AND dans ton WHERE.
Avec un AND, tu demandes que [Architectures-besoins].Besoin soit simultanément égal à "In-Flight connectivity" et à "ACARS communication", ce qui n'est pas possible.
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
28 avril 2015 à 11:46
28 avril 2015 à 11:46
Si je mes une condition en OU, j'obtient cette requête:
Qui me sort l'ensemble des architectures qui satisfont "In-Flight connectivity" ET l'ensemble des architectures qui satisfont "ACARS communication". or mois je voudrais uniquement les architectures qui satisfont les deux besoins.
Peut être que ma table en elle même est mal foutue, mais je ne vois pas comment la modifier intelligemment.
SELECT Materiel.Materiel, [Architectures-besoins].Architecture
FROM Materiel INNER JOIN ([Architectures-besoins] INNER JOIN Materiel_Architecture ON [Architectures-besoins].Architecture = Materiel_Architecture.Architecture) ON Materiel.ID = Materiel_Architecture.ID_materiel
WHERE ((([Architectures-besoins].Besoin)="In-Flight connectivity")) OR ((([Architectures-besoins].Besoin)="ACARS communication"));
Qui me sort l'ensemble des architectures qui satisfont "In-Flight connectivity" ET l'ensemble des architectures qui satisfont "ACARS communication". or mois je voudrais uniquement les architectures qui satisfont les deux besoins.
Peut être que ma table en elle même est mal foutue, mais je ne vois pas comment la modifier intelligemment.
Effectivement, j'avais mal compris ton besoin.
Ce qui est sûr, c'est que ça ne risque pas de marcher avec ce WHERE là.
Il doit falloir passer par une jointure de ta table Materiel sur elle-même pour pouvoir mettre le AND dont tu as besoin.
Je vais y réfléchir mais je ne promets rien, je ne suis pas spécialiste des bases de données.
Ce qui est sûr, c'est que ça ne risque pas de marcher avec ce WHERE là.
Il doit falloir passer par une jointure de ta table Materiel sur elle-même pour pouvoir mettre le AND dont tu as besoin.
Je vais y réfléchir mais je ne promets rien, je ne suis pas spécialiste des bases de données.
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
28 avril 2015 à 13:01
28 avril 2015 à 13:01
C'est très aimable, tiens moi au courant ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
28 avril 2015 à 11:52
28 avril 2015 à 11:52
SQL sont générées par l'assistant de création de requêtes d'ACCESS
ACCESS ?? Tu poses ta question dans SQL SERVER ?.....
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
28 avril 2015 à 11:53
28 avril 2015 à 11:53
ha oui là je n'ai pas été bon... :/
Je n'avais pas remarqué l'existence d'un sous forum Access. Si un modo pouvait aimablement déplacer mon sujet, ce serait bien aimable.
Je n'avais pas remarqué l'existence d'un sous forum Access. Si un modo pouvait aimablement déplacer mon sujet, ce serait bien aimable.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
28 avril 2015 à 11:58
28 avril 2015 à 11:58
je m'en occupe
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
28 avril 2015 à 11:59
28 avril 2015 à 11:59
Merci!
Utilisateur anonyme
Modifié par le père. le 28/04/2015 à 14:51
Modifié par le père. le 28/04/2015 à 14:51
C'était une auto jointure de la table Architectures-besoins, pas de la table Materiel.
En espérant que c'était bien ça que tu voulais :
J'ai une base au format Access 2000 si tu veux
En espérant que c'était bien ça que tu voulais :
SELECT Materiel.Materiel, ab1.Architecture, ab2.Architecture FROM ([Architectures-besoins] AS ab1 INNER JOIN [Architectures-besoins] AS ab2 ON ab1.Architecture = ab2.Architecture) INNER JOIN (Materiel_Architecture INNER JOIN Materiel ON Materiel.ID=Materiel_Architecture.ID_materiel) ON ab1.Architecture = Materiel_Architecture.Architecture WHERE (((ab1.Besoin)="In-Flight connectivity") AND ((ab2.Besoin)="ACARS communication"));
J'ai une base au format Access 2000 si tu veux
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
29 avril 2015 à 09:33
29 avril 2015 à 09:33
Je ne comprends pas si je dois remplacer ab1 et ab2 par des noms de champs?
Si j'exécute ta requête, ACCESS me demande d'entrer une valeur de paramètre pour Architecture-besoins.Architecture. Or je n'ai pas à devoir entrer ce paramètre dans ma requête. le critère de tri étant uniquement le besoin.
Si j'exécute ta requête, ACCESS me demande d'entrer une valeur de paramètre pour Architecture-besoins.Architecture. Or je n'ai pas à devoir entrer ce paramètre dans ma requête. le critère de tri étant uniquement le besoin.
J'ai créé une nouvelle requête et exécuté ta commande SQL. Access ne me demande aucun paramètre.
Par contre la requête me ressort 3 champs ( materiel, ab1.architecture et ab2.architecture) sachant que ab1.architecture et ab2.architecture sont identique.
Mais dans ces deux champs je n'ai pas uniquement les architectures qui satisfont les deux besoins en même temps. J'ai toutes les architectures qui satisfont le premier besoin et toutes celles qui satisfont le second besoin :/
Par contre la requête me ressort 3 champs ( materiel, ab1.architecture et ab2.architecture) sachant que ab1.architecture et ab2.architecture sont identique.
Mais dans ces deux champs je n'ai pas uniquement les architectures qui satisfont les deux besoins en même temps. J'ai toutes les architectures qui satisfont le premier besoin et toutes celles qui satisfont le second besoin :/
Utilisateur anonyme
Modifié par le père. le 29/04/2015 à 11:23
Modifié par le père. le 29/04/2015 à 11:23
Tu n'as pas à remplacer ab1 et ab2 par des noms de champ, ce sont des alias pour Architectures-besoins.
ACCESS me demande d'entrer une valeur de paramètre pour Architecture-besoins.Architecture
Le champ Architecture n'existe pas dans ta table [Architectures-besoin] ?
[Edit]
N'aurais-tu pas oublié un "s" à Architectures-besoins en recopiant la requête ?
La requête fonctionne chez moi sous access, avec des tables et des champs reprenant ceux qui figurent dans les requêtes que tu as données. La seule chose que je ne sais pas, c'est si ça fait bien ce que tu veux car je ne sais pas ce que signifient tes champs, j'ai essayé de deviner.
ACCESS me demande d'entrer une valeur de paramètre pour Architecture-besoins.Architecture
Le champ Architecture n'existe pas dans ta table [Architectures-besoin] ?
[Edit]
N'aurais-tu pas oublié un "s" à Architectures-besoins en recopiant la requête ?
La requête fonctionne chez moi sous access, avec des tables et des champs reprenant ceux qui figurent dans les requêtes que tu as données. La seule chose que je ne sais pas, c'est si ça fait bien ce que tu veux car je ne sais pas ce que signifient tes champs, j'ai essayé de deviner.
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
29 avril 2015 à 11:47
29 avril 2015 à 11:47
Le champ Architecture existe bien dans la table [Architectures-besoin].
Lorsque j'exécute ta requête j'obtiens 3 champs:
-materiel
-ab1.architecture
-ab2.architecture
Sachant que ab1.architecture et ab2.architecture sont identiques (ils comprennent les mêmes informations.
Mais dans ces deux derniers champs je n'ai pas uniquement les architectures qui satisfont les deux besoins en même temps. J'ai toutes les architectures qui satisfont le premier besoin et toutes celles qui satisfont le second besoin.
A moins que cela ne ne donne pas le même résultat chez toi, ça ne donne pas ce que je voudrais. Je voudrais que cela n'affiche que les architectures qui satisfont les deux besoins à la fois :)
Je pense que l'on ai pas loin de la solution mais ce n'est pas encore tout à fait ça.
Merci pour ton aide
Lorsque j'exécute ta requête j'obtiens 3 champs:
-materiel
-ab1.architecture
-ab2.architecture
Sachant que ab1.architecture et ab2.architecture sont identiques (ils comprennent les mêmes informations.
Mais dans ces deux derniers champs je n'ai pas uniquement les architectures qui satisfont les deux besoins en même temps. J'ai toutes les architectures qui satisfont le premier besoin et toutes celles qui satisfont le second besoin.
A moins que cela ne ne donne pas le même résultat chez toi, ça ne donne pas ce que je voudrais. Je voudrais que cela n'affiche que les architectures qui satisfont les deux besoins à la fois :)
Je pense que l'on ai pas loin de la solution mais ce n'est pas encore tout à fait ça.
Merci pour ton aide
Utilisateur anonyme
Modifié par le père. le 29/04/2015 à 12:23
Modifié par le père. le 29/04/2015 à 12:23
Tu as oublié de dire ce que tu avais fait pour passer d'une requête qui te sort une erreur à une requête qui te sort un résultat.
Lorsque j'exécute ta requête j'obtiens 3 champs:
Bien sûr, il y a 3 champs dans le select. Tu peux modifier si tu veux.
ab1.architecture et ab2.architecture sont identiques
Bien sûr, on a ON ab1.Architecture = ab2.Architecture dans la requête.
Chez moi, ça n'affiche que les architectures qui satisfont aux deux besoins à la fois. Peux-tu faire un copier-coller de la requête que tu exécutes (et surtout pas la recopier à la main) ?
Lorsque j'exécute ta requête j'obtiens 3 champs:
Bien sûr, il y a 3 champs dans le select. Tu peux modifier si tu veux.
ab1.architecture et ab2.architecture sont identiques
Bien sûr, on a ON ab1.Architecture = ab2.Architecture dans la requête.
Chez moi, ça n'affiche que les architectures qui satisfont aux deux besoins à la fois. Peux-tu faire un copier-coller de la requête que tu exécutes (et surtout pas la recopier à la main) ?
SILBA31
Messages postés
37
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
27 mai 2015
29 avril 2015 à 14:20
29 avril 2015 à 14:20
Au temps pour moi, ta requête fonctionne et sort le résultat attendu, j'avais fait une erreur de manip au premier coup.Merci beaucoup!
J'ai remplacé les critères par des paramètres modifiables par l'utilisateur:
J'ai essayé d'inclure 3 choix au lieu de deux:
Mais je n'utilise pas la bonne syntaxe dans la partie FROM :/
J'ai remplacé les critères par des paramètres modifiables par l'utilisateur:
PARAMETERS [Besoin 1] Text ( 255 ), [Besoin 2] Text ( 255 ); SELECT Materiel.Materiel, ab1.Architecture FROM ([Architectures-besoins] AS ab1 INNER JOIN [Architectures-besoins] AS ab2 ON ab1.Architecture = ab2.Architecture) INNER JOIN (Materiel_Architecture INNER JOIN Materiel ON Materiel_Architecture.ID_materiel = Materiel.ID) ON ab1.Architecture = Materiel_Architecture.Architecture WHERE (((ab1.Besoin)=[Besoin 1]) AND ((ab2.Besoin)=[Besoin 2]));
J'ai essayé d'inclure 3 choix au lieu de deux:
SELECT Materiel.Materiel, ab1.Architecture FROM ([Architectures-besoins] AS ab1 INNER JOIN [Architectures-besoins] AS ab2 [Architectures-besoins] AS ab3 ON ab1.Architecture = ab2.Architecture=ab3.Architecture) INNER JOIN (Materiel_Architecture INNER JOIN Materiel ON Materiel_Architecture.ID_materiel = Materiel.ID) ON ab1.Architecture = Materiel_Architecture.Architecture WHERE (((ab1.Besoin)="On-board wireless connectivity") AND ((ab2.Besoin)="ACARS communication") AND ((ab2.Besoin)="In-Flight connectivity"));
Mais je n'utilise pas la bonne syntaxe dans la partie FROM :/