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 :

SELECT DISTINCT ne fonctionne pas ? [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 97
    Points
    97
    Par défaut SELECT DISTINCT ne fonctionne pas ?
    Bonjour,

    Je me trouve face à une requête SQL qui n'a pas avoir le résultat espéré. En faite, il semblerait que le mot clé "DSTINCT" n'ai strictement aucun effet, sinon pas celui que j'aimerais.

    Concernant la requête, je dispose de deux tables :
    suivi_chantier { #num_fiche,num_chantier,semaine,annee ...}
    MainOeuvre{ #num_fiche,num_chantier,nom,prenom, ...}
    et
    Un formulaire permet de renseigner les informations suivantes :
    Form_Bilan { nom,prenom,semaine_debut,semaine_fin,anne_debut_anne_fin}

    Concrètement voici la requête que j'ai essayé (et qui ne fonctionne pas tout à fait) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL_chantiers = "SELECT DISTINCT Count(MO.num_chantier) AS nbr " & _
                        "FROM MainOeuvre AS MO INNER JOIN suivi_chantier AS SC " & _
                        "ON MO.num_fiche = SC.num_fiche AND MO.num_chantier = SC.num_chantier " & _
                        "WHERE MO.nom = " & Chr(34) & nom & Chr(34) & " AND " & _
                        "MO.prenom = " & Chr(34) & prenom & Chr(34) & " AND " & _
                        "SC.semaine BETWEEN " & semaine_debut & " AND " & semaine_fin & " AND " & _
                        "SC.annee BETWEEN " & annee_debut & " AND " & annee_fin
    Cette requête affiche : 2
    car il y a deux entrée dans la table MainOeuvre contenant le nom et prénom demandé
    Sauf que, dans ces 2 entrée le num_chantier est identique. Voilà pourquoi j'ai utilisé le mot DISTINCT. Sauf que le résultat ne change pas pour autant.
    Je suis sensé trouver : 1

  2. #2
    Membre habitué
    Femme Profil pro
    Database
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Database

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Points : 135
    Points
    135
    Par défaut
    Bonjour,

    En effet, les clauses COUNT et DISTINCT peuvent être utilisées ensemble dans une instruction pour obtenir le nombre d’entrées distinctes d’une table mais il faut les appeler dans l'autre sens : count(distinct([exp])

    soit : "SELECT Count(DISTINCT(MO.num_chantier)) AS nbr " & _
    ....

    bonne continuation

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 97
    Points
    97
    Par défaut
    Quand je change ma requête comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT Count(DISTINCT MO.num_chantier) AS nbr " & _
    *
    je me retrouve face à une erreur de syntaxe

    Et si je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT Count(DISTINCT(MO.num_chantier)) AS nbr " & _
    J'ai : "Fonction DISTINCT non définie"

    J'ai finalement réussi avec cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL_chantiers = "SELECT Count(*) FROM (SELECT DISTINCT MO.num_chantier AS nbr " & _
                        "FROM MainOeuvre AS MO INNER JOIN suivi_chantier AS SC " & _
                        "ON MO.num_fiche = SC.num_fiche AND MO.num_chantier = SC.num_chantier " & _
                        "WHERE MO.nom = " & Chr(34) & nom & Chr(34) & " AND " & _
                        "MO.prenom = " & Chr(34) & prenom & Chr(34) & " AND " & _
                        "SC.semaine BETWEEN " & semaine_debut & " AND " & semaine_fin & " AND " & _
                        "SC.annee BETWEEN " & annee_debut & " AND " & annee_fin & ")"

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

Discussions similaires

  1. SELECT TOP ne fonctionne pas
    Par Negaton dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/05/2007, 10h26
  2. Fonction DISTINCT ne fonctionne pas sur une date
    Par cramouille dans le forum Access
    Réponses: 5
    Dernier message: 25/10/2006, 15h42
  3. Clause Distinct ne fonctionne pas su SELECT multiple
    Par fabou3377 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/08/2006, 11h39
  4. requête de selection qui ne fonctionne pas
    Par emmablue dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/07/2006, 13h55
  5. Réponses: 13
    Dernier message: 20/07/2004, 08h54

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