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 :

Critère sur requête union


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Points : 60
    Points
    60
    Par défaut Critère sur requête union
    Bonjour,

    Je vous sollicite de nouveau pour de l'aide...
    J'ai la requête SQL suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT COMPANY.CodeCompany, COMPANY.RefInterneQualif, COMPANY.DateQualif, REF_FOLLOWUP.Followup
    FROM REF_FOLLOWUP INNER JOIN COMPANY ON REF_FOLLOWUP.CodeFollowup = COMPANY.Followup
    WHERE (((COMPANY.CodeCompany)=GetCodeCompany()));
     
    UNION SELECT COMPANY.CodeCompany, COMPANY_SURVEILLANCE.RefSurveillance, COMPANY_SURVEILLANCE.DateSurveillance, REF_FOLLOWUP.Followup
    FROM (REF_FOLLOWUP INNER JOIN COMPANY ON REF_FOLLOWUP.CodeFollowup = COMPANY.Followup) INNER JOIN COMPANY_SURVEILLANCE ON COMPANY.CodeCompany = COMPANY_SURVEILLANCE.Company
    WHERE (((COMPANY.CodeCompany)=GetCodeCompany()));
    J'aimerais ajouter un critère sur la date, afin de n'avoir dans ma requète que l'enregistremet pour lequel DateQualif est le plus récent.

    Est-ce que quelqu'un pourrait me dire comment faire ? Est-ce que c'est faisable directement dans le code SQL ?

    D'avance merci à tous.
    MelaAllIn

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Bonjour,

    Il faut compléter le 1er where, toutefois si 2 enregistrements ont la même date qualif ils sortiront tous les 2 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT COMPANY.CodeCompany, COMPANY.RefInterneQualif, COMPANY.DateQualif, REF_FOLLOWUP.Followup
    FROM REF_FOLLOWUP INNER JOIN COMPANY ON REF_FOLLOWUP.CodeFollowup = COMPANY.Followup
    WHERE COMPANY.CodeCompany=GetCodeCompany() and COMPANY.DateQualif=(select max(c.DateQualif) from company c where c.CodeCompany=GetCodeCompany())
     
    UNION SELECT COMPANY.CodeCompany, COMPANY_SURVEILLANCE.RefSurveillance, COMPANY_SURVEILLANCE.DateSurveillance, REF_FOLLOWUP.Followup
    FROM (REF_FOLLOWUP INNER JOIN COMPANY ON REF_FOLLOWUP.CodeFollowup = COMPANY.Followup) INNER JOIN COMPANY_SURVEILLANCE ON COMPANY.CodeCompany = COMPANY_SURVEILLANCE.Company
    WHERE (((COMPANY.CodeCompany)=GetCodeCompany()));

    D'autre part je pense que le 1er ; est en trop

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    Merci pour ta réponse nico84.
    J'ai ajouté le bout de code que tu proposes, mais ça ne fait rien (pas de modif du résultat de mas requète, pas d'erreur non plus).
    Est-ce qu'il n'y a pas des histoires de Majuscules / minuscules dans les requêtes SQL ? Je vois aussi que tu fais apparaitre des c. et des c dans ton expression : ils servent à quoi ?
    Merci d'avance pour ton aide.
    MelaAllIn

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Citation Envoyé par MelaAllIn Voir le message
    J'ai ajouté le bout de code que tu proposes, mais ça ne fait rien (pas de modif du résultat de mas requète, pas d'erreur non plus)
    Ma modif ne concerne que le 1er select puisque le champ DateQualif n'est pas dans le 2e. S'il n'y avait qu'une DateQualif et de nombreuses DateSurveillance l'union a donc encore bcp de lignes...

    Citation Envoyé par MelaAllIn Voir le message
    Est-ce qu'il n'y a pas des histoires de Majuscules / minuscules dans les requêtes SQL ?
    Non pas dans la rédaction de la requête

    Citation Envoyé par MelaAllIn Voir le message
    tu fais apparaitre des c. et des c dans ton expression : ils servent à quoi ?
    c est un alias pour distinguer la table COMPANY dans le select ajouté

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    Re,
    J'ai mal expliqué, dsl...
    Je voudrais qu'il me garde uniquement la date la plus récente, parmi DateQualif issue de ma première partie de requête ET DateSurveillance issue de la deuxième partie...
    MelaAllIn

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Dans ce cas il est plus clair de le faire en 2 fois : nommer la requete union "MaRequete" puis :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CodeCompany, RefInterneQualif, DateQualif, Followup
    FROM MaRequete
    WHERE DateQualif=(select max(DateQualif) from MaRequete)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE COMPANY.CodeCompany=GetCodeCompany()
    Peut être mis dans "MaRequete" ou dans la 2e au choix

    Il est aussi possible de remplacer "MaRequete" par la requete elle-même entre parenthèses mais ça va être indigeste...

    Autre solution si c'est dans du VBA : trier par DateQualif desc et prendre la 1ere ligne seulement

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    OK, merci Nico84,
    J'ai effectivement fait la manip en 2 temps, c'est plus simple...
    Merci necore pour ton aide.
    MelaAllIn

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

Discussions similaires

  1. Doublon sur requête UNION
    Par miine dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/10/2014, 12h53
  2. [AC-2007] Problème sur requête Union
    Par manusp dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/02/2012, 15h17
  3. [WD16] Sous-Requête sur Requête UNION
    Par JustineJ dans le forum WinDev
    Réponses: 1
    Dernier message: 11/08/2011, 13h08
  4. GROUP BY sur requête UNION
    Par DoubleClic dans le forum Requêtes
    Réponses: 6
    Dernier message: 02/02/2010, 13h26
  5. critère sur requête
    Par fleursdesiles dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/01/2008, 04h33

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