Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2011, 14h53   #1
Invité de passage
 
Inscription : février 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 15
Points : 1
Points : 1
Par défaut Une requête bien étrange

Bonjour à vous.

Me voici bloqué dans mon avancement à cause d'une requête un peu particulière.

image A: J'ai une requête dans laquelle plusieurs lignes sont identiques sauf le premier champ (ID_Harnais).

image B: J'ai une table "Harnais" où il y a une information sur la route et sur le type.

Je voudrais faire une requête qui regroupe les lignes de ma requête A en affichant le harnais qui a une route "M" et un type "CSV".

Merci d'avance!
Images attachées
Type de fichier : jpg A.jpg (138,7 Ko, 10 affichages)
Type de fichier : jpg B.jpg (43,9 Ko, 10 affichages)
qung88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 15h04   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Qung88,

Citation:
image A: J'ai une requête dans laquelle plusieurs lignes sont identiques sauf le premier champ (ID_Harnais).
==> cela veut donc dire que le premier champ devrait être toujours différent, non ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h30   #3
Invité de passage
 
Inscription : février 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 15
Points : 1
Points : 1
Par défaut suite de la discussion...

Bonjour,

Non pas forcement, il peut y avoir plusieurs fois le même Id_Harnais.

En fait je voudrais dans ma requête avoir ce qu'il y a dans "l'image A" mais n'avoir qu'une seule ligne sur les trois surlignées.

dans le champ Id_Harnais on a les trois valeurs : M882A1558, M883A1351 et M882A1283.

je voudrais avoir une seule ligne qui a pour valeur de id_harnais celui qui dans l'image B est "CSV" (et si il y en a plusieurs en CSV, celui qui est en route "*M"

Donc, pour les trois valeurs surlignées, je voudrais afficher le harnais M883A1351 car c'est le seul à être CSV et "*M".

Cordialement.
qung88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h47   #4
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Il te faut donc :
  • une requête R1 basée sur la requête de l'image A, groupée par id_tag/connecteur/id_equipement/pwd
    ==> donnera 1 ligne par id_tag/connecteur/id_equipement/pwd.

  • une requête R2 basée sur la requête R1 liée à ta requête de l'image B, en ne sélectionnant que type="CSV" et Route Comme "*M".

Tu devrais obtenir ce que tu souhaites (ou l'adapter simplement).
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 09h23   #5
Invité de passage
 
Inscription : février 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 15
Points : 1
Points : 1
Par défaut suite..

Bonjour Richard.

Alors comme vous m'avez dit, j'ai crée une requête avec id_tag/connecteur/id_equipement/pwd

Mais dans mon image B (qui est une table), je n'ai pas d'information me permettant de relier la requête à cette table (cf image C).

De plus si celà venait à marcher il va rester un gros problème:
Je ne veux pas supprimer tous les "OPT".

En effet, dans l'image A, les deux dernières lignes qui ont les ID_Harnais M882A1354 et M882A1558 représentent un seul et même connecteur (présenté sur deux lignes J1;B et J1;A), mais ces deux ID_Harnais sont OPT! donc les deux lignes vont disparaitre alors qu'il m'en faudrait une.

Au final, il faut arriver à afficher une ligne par connecteur..
Images attachées
Type de fichier : jpg C.jpg (78,9 Ko, 5 affichages)
qung88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 09h38   #6
Invité de passage
 
Inscription : février 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 15
Points : 1
Points : 1
Par défaut RECAPITULATIF

C'est encore moi. J'essaie de clarifier mon besoin:

Je ne veux pas forcement supprimer les lignes qui ne sont pas "CSV".

En fait j'essaie de récupérer une seule ligne pour le champ "connecteur". C'est-à-dire que à chaque fois qu'un connecteur est sur plusieurs lignes, je veux les regrouper.

Le champ qui pose problème est le champs ID_Harnais qui lui ne peut pas être regroupé: donc je souhaite choisir le numéro de harnais qui va correspondre à ma ligne de connecteur:

Dans l'ordre,
1) je voudrais qu'il prenne l'ID_Harnais qui est CSV et en route "*M".
2) Si il n'y en a pas pour ce connecteur, il prend celui qui est CSV sans se préoccuper de la route.
3) et si il n'y a pas de CSV, il prend un OPT à sa guise.

Merci de votre aide
qung88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 11h39   #7
Membre éprouvé
 
Homme
Inscription : octobre 2007
Messages : 324
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 324
Points : 440
Points : 440
Je ne vois pas trop où est le problème:

Code :
1
2
3
4
 
SELECT X_Encours.Connecteur, X_Encours.ID_Tag, X_Encours.ID_Equipement, X_Encours.PWD, Harnais.Nom_Harnais, Harnais.type, Harnais.Route
FROM X_Encours INNER JOIN Harnais ON X_Encours.ID_harnais = Harnais.ID_Harnais
WHERE (((Harnais.type)="CSV")) OR (((Harnais.Route) Like "*M"));
Psychopathe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 12h06   #8
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Qung88 et Psychopathe,

Effectivement, Qung88, tu as tout à fait raison, mea culpa.

Dans ton analyse, il y a un problème de table primaire (la première de la clause FROM) : la table primaire est Harnais.

Avançons, pas à pas. Je te suggère :

Requête R1 :
Table Harnais (FROM) ;
sélectionner, uniquement, type="CSV" et Route Comme "*M" (WHERE).
==> liste des Harnais CSV et "*M".

Requête R2 :
Table Harnais (FROM) ;
sélectionner, uniquement, les type="CSV" (WHERE).
==> liste des Harnais CSV.

Requête R3 :
Table Harnais (FROM) ;
sélectionner, uniquement, les type="OPT" (WHERE).
==> liste des Harnais OPT.

Reqûête R4 :
Table Harnais liée à R1, R2 et R3 avec flèche à droite (FROM/LEFT JOIN).
==> liste les Harnais avec les critères qui t'intéresse.

Regardes ce que donne R4 : nous verrons, ensuite, comment intégrer, peut-être des VraiFaux (IIf).
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 15h43   #9
Invité de passage
 
Inscription : février 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 15
Points : 1
Points : 1
Bonjour Richard et Psychopathe.

Donc pour commencer j'ai lancé la requête de psychopathe qui ne me remonte hélas pas les lignes souhaitées. Le fait de trier avec un critère "CSV" est trop restrictif et je n'ai pas le résultat escompté.

Dans un second temps, j'ai lu en détail la manipulation de richard. et j'ai fait le synoptique de ce que je voudrais, qui me donne:

si même connecteur et même Id_tag
Alors
{
Id_harnais="csv" et "*M"
et si Il n'y en a pas
alors Id_Harnais= "csv"
et si il n'y en a pas
alors Id_Harnais="opt" et "*M"
et si il y en a 2
alors.... BREF
}
Vu tous les critères, je veux quand même être sur de bien tout remonter.

Si je fais des requêtes où dans l'une je récupère tous les CSV en *M, puis une autre avec les CSV, puis OPT, puis.... celà va être difficile a regrouper en fonction des harnais.

J'ai trouvé une solution expliquée plus bas mais j'ai besoin d'un petit coup de pouce encore

Pour finir complètement: j'ai tapé CConnecteur: Gauche([Connecteur];2) ceci me renvoie les deux premiers caractères.

Mais je voudrais faire cela a la place : Rechercher la position du ";" et supprimer tous les caractères après le point-virgule ainsi que lui même.
Par exemple, j'ai 1J1;A et je voudrais obtenir 1J1



A TITRE D'INFORMATION :Voici où j'en suis: ca a l'air de marcher:

1) je fais une requête dans laquelle j'ajoute a mon image A les données "type" et "route" (qui me permettront de trier le ID_harnais) et où j'enlève mon Id_harnais qui me gênait pour le regroupement.

2) de là je fais une requête dans laquelle je trie le type par "min", et j'obtiens alors les valeurs "CSV" ou "OPT" qui correspondent a l'ID_harnais qui m'intéresse.

3) je met en regroupement mon "min" de l'étape 2) et pareil que dans la 2): je met le critère "route" à "min". J'obtiens alors la valeur de la route minimale dans l'ordre alphabétique, ce qui me donne bien 1M puis 2M puis 1ME... etc

4) au final je réinjecte ces lignes dans ma table où j'ai les ID_Harnais en fonction de tous les critères de ma requête 3) et je récupère les lignes qui m'intéressaient!
qung88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h16   #10
Membre éprouvé
 
Homme
Inscription : octobre 2007
Messages : 324
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 324
Points : 440
Points : 440
Pas compris ton problème, mais pour récupérer les connecteurs sans ";":

Code :
1
2
 
VraiFaux(DansChaîne(1;[Connecteur];";")=0;[Connecteur];Gauche([Connecteur];DansChaîne(1;[Connecteur];";")-1))
Psychopathe est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/02/2011, 16h40   #11
Invité de passage
 
Inscription : février 2011
Messages : 15
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 15
Points : 1
Points : 1
Par défaut Merci

C'est parfait!

Oui c'est un peu bizarre comme requête: pas facile à comprendre et surtout pas facile pour moi d'expliciter clairement mes attentes.

Tout du moins, un grand merci pour cette aide précieuse. Je vais pouvoir gérer mes connecteurs plus aisément
qung88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h12.


 
 
 
 
Partenaires

Hébergement Web