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

Langage SQL Discussion :

Requete un peu compliquée


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Requete un peu compliquée
    Bonsoir,

    Pour simplifier j'ai une table qui historise les charges des vehicules entrés au niveau d'une usine
    ce que je voudrais faire, c'est d'éliminer les Charges redondantes,et de ne garder qu'un seul enregistrement de chaque couple (Immat,Charge) identique, et si possible d'enumérer le nombre d'enregistrement relatives à chaque charge et les mettre dans un nouvel attribut Nombre_Charge
    par exemple si j'ai la structure Tonage(Numero,Immat,Charge,Autre données)

    Numero , Immat , Charge , Autre_données
    1 , A , 100 , XXXXX
    2 , A , 100 , XXXXX
    3 , A , 200 , XXXXX
    4 , B , 100 , XXXXX
    5 , C , 100 , XXXXX
    6 , C , 100 , XXXXX
    7 , C , 200 , XXXXX
    8 , C , 200 , XXXXX
    9 , C , 300 , XXXXX

    Une fois la requete appliquée je devrais avoir comme résultat

    Numero , Immat , Charge , Nombre_Charge , Autre_données
    1 A 100 2 , XXXXX
    3 A 200 1 , XXXXX
    4 B 100 1 , XXXXX
    5 C 100 2 , XXXXX
    7 C 200 2 , XXXXX
    9 C 300 1 , XXXXX

    Explication:

    J'ai initialement trois vehicules matriculés A, B et C;

    la voiture A a été inspecté à trois reprises (Autre données date); deux fois avec une charge de 100 kg et une troisiéme avec une charge de 200 kg...
    La voiture B a été inspecté une seule fois avec une charge de 100 kg;
    La voiture C a été inspecté 5 fois, dont deux avec la charge 100 et deux autres avec la charge 200 et une derniére fois avec la charge 300:

    Pour la voiture A , les deux enregistrement 1 et 2 sont redondants au niveau des attributs (Immat, Charge) donc je garde que l'enregistrement 1 et je donne la valeur 2 à l'attribut "nombre_charge" puisque il y'a deux enregistrements ayant une valeur de Charge égale à 100 pour la voiture A;
    puis je liste l'enregistrement 3 puisque il est unique. je donne aussi la valeur 1 à l'attribut "Nombre_Charge" puisque pour la voiture "A" et pour une charge de 200 j'ai eu une seule valeur de charge,
    J'espere que c'est un peu plus claire,



    Merci de m'aider si vous voyez comme faire, je piétine depuis deux heures làdessus,
    welid

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Bonjour,

    Il faut utiliser la fonction de calcul statistique COUNT de paire avec la clause group by qui indique quelles sont les rubriques d'aggrégat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT IMMAT, CHARGE, COUNT(*) as Nombre_Charge, FIRST(Autre_donnees)
    FROM Tonage
    GROUP BY IMMAT, CHARGE
    Le First retourne la rubrique Autre_donnees pour la première ligne. Si les informations stockées dans Autres_donnees sont identiques pour tous les IMMAT/CHARGE, on aurait pu le mettre dans le group by et ne pas utiliser First.

    Pour bien comprendre tout ça : http://sqlpro.developpez.com/cours/sqlaz/ensembles/

  3. #3
    Membre régulier

    Profil pro
    Enseignant
    Inscrit en
    Novembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 32
    Points : 99
    Points
    99
    Par défaut
    Je pense que vous devez creer une nouvelle table car la structure change:

    Vous creer la nouvelle table: nouvelleTable

    puis vous pouvez essaier:

    insert into nouvelleTable (Num, Immat, Charge, Nombre_Charge)
    select Num, Immat, Charge, count(Num) from ancienneTable group by Charge;


    Note: j'ai pas testé!

Discussions similaires

  1. Requete un peu compliquée :)
    Par Denden54 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2010, 09h44
  2. Besoin d'aide sur une requete externe un peu compliqué
    Par LiTiL_DiViL dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/12/2009, 08h46
  3. Requete un peu compliqué pour moi
    Par passie dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/04/2006, 15h08
  4. [MySQL 4.1.17] requete un peu compliqué à faire
    Par Zen_Fou dans le forum Administration
    Réponses: 1
    Dernier message: 26/04/2006, 17h41
  5. [SQL - ORACLE] Requete un peu compliquée (pour moi)
    Par Worldofdada dans le forum Langage SQL
    Réponses: 15
    Dernier message: 03/11/2005, 08h25

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