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

Développement SQL Server Discussion :

Requête dans une requête sur une même colonne


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Points : 33
    Points
    33
    Par défaut Requête dans une requête sur une même colonne
    Bonjour,

    Je cherche à sélectionner les membres qui n'ont pas reçu de facture cette saison ainsi que les nouveaux membres à qui il faut envoyer une facture.
    Le code suivant fonctionne presque comme je veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT mbr_id FROM demo_facture WHERE (date_facture < '2015-05-01')
    				UNION
    				SELECT mbr_id FROM `demo_membre` M WHERE NOT EXISTS (SELECT mbr_id FROM `demo_facture` WHERE (M.mbr_id = mbr_id))
    En fait sur la première ligne je voudrais qu'il me sélectionne les membre dont la date est inférieur à la date de référence sauf dans le cas ou il existe un enregistrement avec une date supérieur.

    Plus simplement:
    Le membre 1 à reçu sa facture de la saison précédente le 2014-10.01
    Le membre 2 à reçu sa facture de la saison précédente le 2014-10.01 et celle de cette saison le 2015-10-01
    Le résultat de ma requête doit me sortir le membre 1 uniquement.

    En français ça donne "Sort moi les membre qui ont une facture de 2014 et pas en 2015

    J'espère avoir été suffisamment claire et qu'il existe une solution...
    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Citation Envoyé par safraga Voir le message
    En français ça donne "Sort moi les membre qui ont une facture de 2014 et pas en 2015
    Essayez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT mbr_id 
    FROM demo_facture main
    WHERE main.date_facture between '2014-01-01' and '2014-12-31'
      AND not Exists
         (select 1 from demo_facture subq
          where subq.mbr_id = main.mbr_id
            and subq.date_facture > '2014-12-31')
    Par contre pour ça :
    Citation Envoyé par safraga Voir le message
    Je cherche à sélectionner les membres qui n'ont pas reçu de facture cette saison ainsi que les nouveaux membres à qui il faut envoyer une facture.
    Il faut faire une requete sur la table des membres avec un test d'existence sur la table facture, quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT mbr_id 
    FROM table_membres main
    WHERE main.date_adhesion > '2014-10-31' 
      AND not Exists
         (select 1 from demo_facture subq
          where subq.mbr_id = main.mbr_id)
    Comme vous n'avez pas décrit la table des membres, j'ai extrapolé, à vous d'adapter

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Septembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 58
    Points : 33
    Points
    33
    Par défaut
    Bonjour,
    ça fonctionne parfaitement bien en y ajoutant le select UNIION SELECT après votre code j'obtiens tous les membres qui n'ont pas reçu leur factures pour la saison en cours.

    Merci beaucoup pour votre aide

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/08/2013, 12h53
  2. Réponses: 16
    Dernier message: 11/09/2009, 10h56
  3. une requête avec 2 count sur la même table
    Par epeichette dans le forum Requêtes
    Réponses: 11
    Dernier message: 30/06/2009, 09h19
  4. Besoin d'une correction sur une requête
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/12/2007, 18h47
  5. Réponses: 3
    Dernier message: 15/06/2007, 22h50

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