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 pour ne récuperer que 1 fois les données.


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2002
    Messages : 37
    Points : 17
    Points
    17
    Par défaut requete pour ne récuperer que 1 fois les données.
    Bonjour,

    je me permet de vous proposer un petit problème.

    j'ai une requete qui utilise 2 tables :
    Donnees
    Localisation

    structure de la table Donnees :
    - date_arrivee
    - date_situation
    - id_site
    - Nb_traites
    ...

    structur de la table Localisation :
    - serveur
    - id_site
    - lib_site
    ...

    dans le table Localisaion, la colonne site n'est pas un identifiant, c'est à dire qu'il y a plusieurs fois le même site.

    exmple. 2 fois metz

    et la table Donnees est reliées à la table Localisation uniquement par le site.

    résultat, quand je fais une requete pour résuper Donnees.Nb_traites et Localisation.lib_site, j'ai deux fois trop de données pour mets, parceque metz est deux fois dans Localisation

    exemple : si dans Données, j'ai 46 pour metz, quand je lance ma requete; j'ai au final 92 pour metz...

    ma requette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT
      LOCALISATION.ID_SITE,
      sum(DONNEES.NB_TRAITES),
      LOCALISATION.LIB_SITE
    FROM
      LOCALISATION,
      DONNEES
    WHERE
      DONNEES.ID_SITE=LOCALISATION.ID_SITE
    GROUP BY
      LOCALISATION.ID_SITE, 
      LOCALISATION.LIB_SITE
    donc ma question :
    est ce que vous avez une idée, sans modifier la base, pour ne plus recuperer le double pour metz.

    PS : je sais que la base n'est pas bonne, mais je n'ai pas le droit de la modifier.

    merci d'avance.

    bonne journée

  2. #2
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    SELECT DISTINCT ......
    Steve Hostettler
    est ton ami(e) et le tag aussi.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2002
    Messages : 37
    Points : 17
    Points
    17
    Par défaut
    non, le simple distinct ne fonctionne pas. puisque dans les ligne que je récupère, je n'ai qu'un ligne avec metz, mais double (par rapport à ce que je regarde dans la table données)

    merci quand même

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2002
    Messages : 37
    Points : 17
    Points
    17
    Par défaut
    je crois qu'un left join pourrait etre une piste (je sais pas pourquoi, mais je pense à ca...)

    après, je suis un peu rouillé niveau SQL... et je sais pas trop l'utiliser...

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Bonjour,

    Pourais tu etre un peu plus précis dans ton explication car je ne comprends pas tout Mais aparrement je crois que tu va etre bloqué. D'ou l'utilité d'utiliser des identifiants Unique dans les jointures.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2002
    Messages : 37
    Points : 17
    Points
    17
    Par défaut
    bonjour,

    je vais avoir du mal à etre plus précis.

    et puis je ne peux pas modifier la base.

    je peux donner 1 exemple :

    contenu de la table Données

    ID_SITE | NB_TRAITES
    MET | 12

    Contenu de la table Localisation

    SERVEUR | ID_SITE | LIB_SITE
    1 | MET | Metz
    2 | MET | Metz

    quand j'applique la requete de mon premier post, j'obtien 1 ligne avec 24 pour Metz (et non pas 2 lignes à 12)

    c'est un peut bizarre. mais je suis un peu perdu.

    et bien sur, je ne peut pas modifier la base pour avoir une table site(ID_SITE, LIB_SITE)

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT xxx...
    FROM Donnees d INNER JOIN 
          (SELECT id_site, MAX(lib_Site)
           FROM Localisation 
           GROUP BY id_site) s ON d.id_site = s.id_site
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2002
    Messages : 37
    Points : 17
    Points
    17
    Par défaut
    merci pour la requete, je ne l'ai pas essayée, mais finalement, je ne peut pas modifier cela comme ca (parceque j'utilise en fait un progiciel, Business Object, et je ne peut que modifier la clause where ou select dans l'univers BO...)

    merci beaucoup à tous ceux qui m'ont aidé.

    bonne fin de journée.

    à bientot.

  9. #9
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 74
    Points
    74
    Par défaut
    Salut,

    As- tu essayé ceci dans BO,
    Au niveau de l'éditeur de requêtes , cliquez sur le bouton Options puis
    cochez "No Duplicate Rows" (version anglaise)

    Chris

Discussions similaires

  1. [MySQL] requete pour faire un select dans toutes les tables pour trouver le titre
    Par japhettchabao dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/09/2014, 20h02
  2. Un getter qui ne renvoie qu'une fois les données pas à chaque fois
    Par tonytrua dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 17/12/2011, 22h05
  3. Evitre que BCP truncate les données
    Par FHeybati dans le forum Outils
    Réponses: 1
    Dernier message: 17/08/2011, 17h21
  4. [MySQL] afficher une seule fois les données redondantes
    Par ginger4957 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/05/2009, 16h04
  5. récuperé dans une feuille les donnés de plusieur classeurs fermé
    Par peygase83 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/02/2009, 18h31

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