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

HyperFileSQL Discussion :

LEFT JOIN avec conditions


Sujet :

HyperFileSQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 365
    Points : 176
    Points
    176
    Par défaut LEFT JOIN avec conditions
    Bonjour,
    je fais suite à cette discussion http://www.developpez.net/forums/d15...n/#post8684999 car je pense que mon nouveau problème a plus sa place ici.

    J'ai demandé de l'aide pour créer une requête pour récupérer dans ma base de données toutes les sociétés qui n'avaient pas été prospectées depuis une date ainsi que celles qui n'avaient jamais été prospectées.

    Voici la requête que l'on m'a conseillé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DISTINCT Societe.IdSociete 
    FROM Societe LEFT JOIN Prospection ON Prospection.IdSociete = Societe.IdSociete AND Prospection.DateProspection > DateLimite 
    WHERE Prospection.IdSociete Is Null
    Le problème est que la condition soit présente ou non dans la jointure, la requête ne me renvoie que la liste des sociétés qui n'ont jamais été prospectées.

    J'ai testé ma requête dans SQLServer et ça me donne le bon résultat.
    Pensez-vous qu'il y ait des limitations de conditions dans les jointures dans HFSQL?

    Je vous remercie.
    Qui vit par le Troll périra par le Troll!

  2. #2
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Bonsoir,

    Comment exécutes tu la requête depuis Windev ? Car si tu utilise HExecuteRequeteSQL() sans le paramètre hSansCorrection, Windev peux se permettre de retravailler ta requête.

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Je ne suis pas certain que la requête soit correcte. C'est vraiment ce que j'ai le plus de mal à faire en SQL : rechercher les manquants.

    Une piste :
    - parcourir le fichier société
    - pour chaque id passé en paramètre, rechercher la date de la dernière prospection.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 365
    Points : 176
    Points
    176
    Par défaut
    Bonjour,
    je vous remercie pour vos réponses.

    Le problème est que j'ai testé cette requête dans le Centre de Contrôle HyperFileSQL, donc le paramètre HRequeteSansCorrection n'entre pas en compte. Et lorsque je teste la requête dans un SQL Server, j'obtiens le bon résultat.

    J'aimerais si possible éviter de migrer ma base de données vers un autre SGBD car vu que j'utilise les fonction H...() pour les requêtes simples, ça va m'obliger à revoir tout mon code.
    Qui vit par le Troll périra par le Troll!

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Ce que je te disais, c'est de ne pas passer par le Centre de Contrôle mais de faire un bout de (pseudo) code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Pour tout societe
    Hexecuterequete(Requete recherchant prospection)
    si condition de la requête alors ajouter dans table
    FIN
    C'est bourrin, mais au moins tu ne te retrouves pas avec du Null (pas trop bien géré en WinDev).
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 365
    Points : 176
    Points
    176
    Par défaut
    Bonjour,
    je vous remercie pour vos réponses.

    Je suis parti sur la solution de faire ma recherche en deux temps
    dans un premier temps, je recherche les sociétés qui n'ont pas de prospection et je les ajoute dans une table

    et dans un deuxième temps, je recherche les société qui ont une prospection; pour chacune d'elles, je calcule combien elles ont de prospection au delà de ma date; celles dont le résultat est 0 sont ajoutées dans la table.

    c'est du bourrin également, mais on reste sur des requêtes plus classiques qui sont mieux implémentées par windev.
    Qui vit par le Troll périra par le Troll!

  7. #7
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 327
    Points : 3 840
    Points
    3 840
    Par défaut
    Bonjour,

    J'ai comme un doute sur le bon fonctionnement de cette requêtes dans le sens où :
    - dans la jointure, tu récupères toutes les sociétés ayant dépassées la date de prospection
    - dans le where, tu ne souhaites que les sociétés qui n'ont pas de prospection

    Pour moi, il est normal que tu ne récupères que ces dernières.

    Je verrai bien un truc du genre :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT Societe.IdSociete 
    FROM Societe LEFT JOIN Prospection ON Prospection.IdSociete = Societe.IdSociete AND (Prospection.DateProspection > DateLimite OR Prospection.IdSociete Is Null)

Discussions similaires

  1. Left join avec une condition dans l'autre table
    Par rj450 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 22/02/2013, 16h50
  2. Problème LEFT JOIN avec conditions ?
    Par Zane dans le forum Requêtes
    Réponses: 8
    Dernier message: 05/03/2010, 16h29
  3. left outer join avec condition
    Par fisto dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/08/2007, 08h52
  4. Oraclei : LEFT JOIN et conditions
    Par alexadvance dans le forum Oracle
    Réponses: 9
    Dernier message: 02/11/2005, 15h22
  5. LEFT JOIN avec Oracle 8i ne va pas... doit utiliser (+)
    Par loikiloik dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/04/2004, 16h38

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