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 :

Probleme pour modifier cette requete SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut Probleme pour modifier cette requete SQL
    Bonjour

    cette requete SQL (Hyperbase windev)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT SORTIES.IDREF AS IDREF,
    SUM(SORTIES.QNTSORTIE) AS SOMMEQNTSORTIE
     FROM SORTIES, ENTREES
     WHERE SORTIES.IDREF = {pIdref}
     AND SORTIES.DATESORTIE >= {pDatedebut}
     AND SORTIES.DATESORTIE <= {pDatefin}
     AND SORTIES.IDDEPOTS = {pIddepots}
     AND SORTIES.TYPESOR = {pTypesortie}
     AND SORTIES.IDENTREES = ENTREES.IDENTREES
     AND ENTREES.DATEENTREE <= {pEntreeDate}
     GROUP BY SORTIES.IDREF
    marche bien, mais je dois la modifier et rajouter un critere par rapport à la table client
    Dans chaque table sorties et entree, j 'ai bien le ID client, dans la table client j ai une colonne TYPECLIENT qui contient soit 1 ou 2,3,4,5

    Je dois exclure de ma requete tous les clients dont le TYPECLIENT = 3

    comment faire ca ??

    merci à vous

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour

    Vous pouvez joindre votre table client, et appliquer un filtre dessus.

    J'ai modifié votre requête pour utiliser les jointures normalisées

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT 
        SORTIES.IDREF AS IDREF,
        SUM(SORTIES.QNTSORTIE) AS SOMMEQNTSORTIE
    FROM CLIENT
    INNER JOIN SORTIES 
        ON SORTIES.IDCLIENT = CLIENT.IDCLIENT
    INNER JOIN ENTREES 
        ON SORTIES.IDENTREES = ENTREES.IDENTREES
    WHERE SORTIES.IDREF = {pIdref}
        AND SORTIES.DATESORTIE >= {pDatedebut}
        AND SORTIES.DATESORTIE <= {pDatefin}
        AND SORTIES.IDDEPOTS = {pIddepots}
        AND SORTIES.TYPESOR = {pTypesortie}
        AND ENTREES.DATEENTREE <= {pEntreeDate}
        AND TYPECLIENT <> 3
    GROUP BY SORTIES.IDREF

  3. #3
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    bonjour

    je ne connais ce SQL,

    mais a propos de la date, il serait plus judicieux d'utiliser BETWEEN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT 
        SORTIES.IDREF AS IDREF,
        SUM(SORTIES.QNTSORTIE) AS SOMMEQNTSORTIE
    FROM CLIENT
    INNER JOIN SORTIES 
        ON (SORTIES.IDCLIENT = CLIENT.IDCLIENT AND CLIENT.TYPECLIENT <> 3)
    INNER JOIN ENTREES 
        ON SORTIES.IDENTREES = ENTREES.IDENTREES
    WHERE SORTIES.IDREF = {pIdref}
        AND SORTIES.DATESORTIE BETWEEN {pDatedebut} AND {pDatefin}
        AND SORTIES.IDDEPOTS = {pIddepots}
        AND SORTIES.TYPESOR = {pTypesortie}
        AND ENTREES.DATEENTREE <= {pEntreeDate}
     
    GROUP BY SORTIES.IDREF

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut
    SQL version Windev

    merci a vous, j essai les 2 solutions et vous tiens au courant

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    Attention si TYPECLIENT est nullable, la requete de aieuu ne renverra pas les lignes corrrespondant à un typeclient null.
    Dans ce cas il faudrait remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND (TYPECLIENT <> 3 or TYPECLIENT IS NULL)
    Car en SQL NULL n'est pas différent de 3, il n'est pas égal à 3,en fait il n'est pas comparable à 3.
    Cordialement
    Soazig

Discussions similaires

  1. Probleme ADO adapter une requete sql pour l'utiliser dans mon code vb6
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/04/2009, 15h53
  2. [OCI] une erreur dans l'execution pour cette requete SQL
    Par Abdelkaoui dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 14/09/2007, 12h29
  3. Probleme pour rediger ma requete sql
    Par JYM34 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 22/09/2006, 12h58
  4. Réponses: 26
    Dernier message: 23/06/2006, 15h45

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