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

WinDev Discussion :

[HFSQL] Cherche requête SQL [WD16]


Sujet :

WinDev

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Points : 188
    Points
    188
    Par défaut [HFSQL] Cherche requête SQL
    Bonjour,

    Dans la série requêtes SQL (pour lesquelles je ne suis pas vraiment à l'aise), je vous soumets mon soucis.

    J'ai un fichier de commande (EXPEDITIONS_ENTETE) et un fichier de lignes de commande (EXPEDITIONS_LIGNES). Chaque ligne de commande à un numéro de ligne (théoriquement unique) NUMLIGNE_ORIGINE. Le lien entre le fichier des commandes et les lignes est le numéro de commande (NUMBLEXP).

    Mon problème est de détecter dans le fichier EXPEDITIONS_LIGNES, tous les doublons qui pourraient exister sur NUMLIGNE_ORIGINE. Voici la requête que j'ai :

    SELECT COUNT(*) AS Nbr_Doublons, NUMLIGNE_ORIGINE
    FROM EXPEDITIONS_LIGNES
    WHERE DEPOSANT = 'XXX' AND TYPELIGNE = 'I'
    GROUP BY NUMLIGNE_ORIGINE, DEPOSANT, TYPELIGNE
    HAVING COUNT(*) > 1
    ORDER BY NUMLIGNE_ORIGINE

    Cette requête fonctionne parfaitement et me sort la liste des numéros de ligne en doublon ainsi que leur nombre mais ne correspond pas tout à fait à mon besoin car je voudrais un peu plus de détail, à savoir, pour chaque doublon connaitre le numéro de commande (NUMBLEXP) correspondant.

    Donc plutôt que d'avoir cela (résultat de ma requête) :

    2 797378
    2 804521
    2 854120
    Etc...

    Je voudrais plutôt un truc du genre :

    797378 CDE9354
    797378 CDE9358
    804521 CDE9548
    804521 CDE9570
    Etc...

    Pensez-vous qu'avec une requête je puisse arriver au résultat escompter ?

  2. #2
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    Je ferais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT NUMBLEXP, NUMLIGNE_ORIGINE
    FROM EXPEDITIONS_LIGNES
    WHERE DEPOSANT = 'XXX' 
    AND TYPELIGNE = 'I'
    AND NUMBLEXP IN(
    SELECT NUMBLEXP, COUNT(*)
    FROM EXPEDITIONS_LIGNES
    GROUP BY NUMBLEXP
    HAVING COUNT(*) > 1)
    Non testé ...

    EDIT : Un COUNT(*) qui ne sert à rien et un ORDER BY pour un affichage correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT NUMBLEXP, NUMLIGNE_ORIGINE
    FROM EXPEDITIONS_LIGNES
    WHERE DEPOSANT = 'XXX' 
    AND TYPELIGNE = 'I'
    AND NUMBLEXP IN(
    SELECT NUMBLEXP
    FROM EXPEDITIONS_LIGNES
    GROUP BY NUMBLEXP
    HAVING COUNT(*) > 1)
    ORDER BY NUMBLEXP
    Bitwin

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Points : 188
    Points
    188
    Par défaut
    Bonjour et merci pour ce retour,

    Après test les deux requêtes j'ai à chaque fois la même punition.

    Echec de l'exécution de la requête, raison :

    Fichier EXPEDITIONS_LIGNES inconnu (au niveau de la sous requête).

    Pourtant en exécutant la sous-requête individuellement, elle est bien exécutée !

    C'est comme s'il refusait d'exécuter deux requêtes sur le même fichier.

  4. #4
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Points : 52
    Points
    52
    Par défaut
    Sur quel SGBD est basée la requête ?

    Quelle est le message d'erreur complet ?

    Le modèle de cette requête fonctionne sur un HFSQL C/S V18 sans erreur.

    Bitwin

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Points : 188
    Points
    188
    Par défaut
    HFSQL en version 17 du centre de contrôle.

    Ci-joint le message complet.

    Peut-être que je suis allé un peu vite je vais approfondir le test. Mais si tu as une idée je suis toujours preneur...

    Merci
    Images attachées Images attachées  

  6. #6
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Points : 52
    Points
    52
    Par défaut
    Tu exécute la requête à partir du centre de contrôle HyperFileSQL ?
    ==> A bannir. Beaucoup d'ordre SQL ne sont pas reconnus dans cet outil sur des requêtes un peu plus complexe.

    Réalise le test dans ton projet et en lien avec ta BDD. Cela doit fonctionner.

    Bitwin

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Points : 188
    Points
    188
    Par défaut
    Effectivement tu as tout à fait raison, testé en version 16 et là la requête a été exécutée.

    Par contre il me sort un peu trop de chose.

    Dans ma requête initiale il me sortait 15 lignes avec pour chacune 2 doublons, avec la tienne, il me sort 16964 lignes alors qu'il devrait m'en sortir 30 au maximum. En fait cette valeur correspond à peu de chose près au total des lignes de commande (17000)

  8. #8
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Points : 52
    Points
    52
    Par défaut
    Oups ... Inversion par rapport à la demande ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT NUMBLEXP, NUMLIGNE_ORIGINE
    FROM EXPEDITIONS_LIGNES
    WHERE DEPOSANT = 'XXX' 
    AND TYPELIGNE = 'I'
    AND NUMLIGNE_ORIGINE IN(
    SELECT NUMLIGNE_ORIGINE
    FROM EXPEDITIONS_LIGNES
    GROUP BY NUMLIGNE_ORIGINE
    HAVING COUNT(*) > 1)
    ORDER BY NUMBLEXP
    Bitwin

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Points : 188
    Points
    188
    Par défaut
    je venais tout juste d'en arriver à la même conclusion que toi, comme ça c'est nettement mieux.

    Merci pour tout, comme ça c'est impeccable !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/01/2009, 21h21
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37
  5. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/02/2003, 16h44

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