IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Une requête bien étrange [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    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 Images attachées   

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Qung88,

    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 ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    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.

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    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).

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    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 Images attachées  

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    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

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    Je ne vois pas trop où est le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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"));

  8. #8
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    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).

  9. #9
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    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!

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut
    Pas compris ton problème, mais pour récupérer les connecteurs sans ";":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VraiFaux(DansChaîne(1;[Connecteur];";")=0;[Connecteur];Gauche([Connecteur];DansChaîne(1;[Connecteur];";")-1))

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 5
    Points
    5
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une erreur bien étrange..
    Par [gR]Ronin dans le forum Excel
    Réponses: 5
    Dernier message: 31/03/2008, 08h49
  2. Comment savoir si une requête a bien été executé ?
    Par taisherg dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/06/2007, 16h34
  3. Réponses: 3
    Dernier message: 31/05/2007, 07h24
  4. Réponses: 2
    Dernier message: 13/04/2007, 07h09
  5. Une requête bien compliquée pour moi
    Par bellande dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 01/02/2007, 21h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo