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

MS SQL Server Discussion :

Aide pour faire une requete


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut Aide pour faire une requete
    Bonjour,

    J'ai une table client et une table société, un client appartient à une seule société dans une date donnée, ces clients délivrent des documents, les clients se chauvauchent entre les société mais dans des dates strictment différentes, je veux calculé le nombre de docuemnts par sociétés, pour faire cela je dois connaitres les client de chaque sociétés dans la date d'ajourd'hui, comment puis je faire ?

    CLient(IdClient, ...)
    Appartient(IdClient, IdSociete, datedebut, dateFin)
    Societe(IdSociete, ....)

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vérifiez que la date que vous passez en paramètre :
    - se trouve entre la date de début et de fin (BETWEEN)
    - est plus grande que la date de début si la date de fin est NULL

    Donnez votre requête si vous êtes bloqué

    @++

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Bonjour, je passe rien en paramètre, le nombre de documents je le calcule pour toute ma table, donc je m'explique, parce que j'ai essayé différents requetes et ca n'a pas abouti.

    J'ai :
    la table Client
    ID Nom ....
    cl1 client 1
    cl2 client 2
    ....

    la table Société
    ID Nom ....
    sc1 société1
    sc2 société2
    ....

    la table Affectation

    ID Societé DateDebut DateFin
    cl1 sc1 10/02/2009 15/06/2009
    cl1 sc2 16/06/2009 15/06/2010
    cl2 sc1 11/01/2009 15/09/2009


    la table document

    ID IDDoc DateAchat
    cl1 1 10/02/2009
    cl1 2 10/02/2009
    cl1 3 10/02/2009
    cl1 4 16/06/2009
    cl1 5 16/06/2009
    cl2 1 11/01/2009
    cl2 2 11/01/2009

    Je dois faire une requete de telle sorte que le resultat sera comme suit

    cl1 sc1 3
    cl1 sc2 2
    cl2 sc1 2

    Sans spécifier les nom de client ni de date parce que j'ai un nombre tres important de client et c'est impossible de gére les dates, quelqu'un a une idée ?

  4. #4
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut


    tu peux nous fournir les modèles de données pour :
    - ta table client
    - ta table société
    - les relations

    et la requête que tu as actuellement ?

    Peut être que tu peux déjà faire ta requête en spécifiant une date en dur pour critère.
    Cela te permettra de vérifier que pour une date, tu récupères touts les documents liés à une société

    @+

  5. #5
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    mais non, je veux pas sopécifier une date, parce que je cherche a avoir le nombre des le debut, en plus je peux pas le faire pour chaque client parce que les date de debut d'affectation a une société ne sont pas les memes pour tous les clients

  6. #6
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut
    Poste qd même la partie de ton modèle de données qui concerne ce post sous forme de schéma.

    Sinon, suivant ce que tu as dit dans ton post, je pense qu'on peut faire la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select c.nom, s.nom, count(d.iddoc) 
    from client c, societe s, affectation a, document d
    where
    	c.id = a.id 
    	and c.id = d.id
    	and a.societe = s.id
    	and d.dateachat BETEWEEN a.datedebut and a.datefin
    group by c.nom, s.nom

  7. #7
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Attention avec les anciennes syntaxes ... qui ne font plus parti du standard et qui peuvent également poser des problèmes de compatibilité avec les évolutions de versions de SQL Server.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT 
    	s.nom, 
    	c.nom,
    	count(d.iddoc) AS nb_doc
    FROM client AS c
    INNER JOIN affectation AS a
    ON c.id = a.id 
    INNER JOIN societe AS s
    ON a.societe = s.id
    INNER JOIN document AS d
    ON c.id = d.id 
     AND d.dateachat BETWEEN a.datedebut AND a.datefin
    GROUP BY s.nom, c.nom
    ++

  8. #8
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Bonjour, j'ai essayé cette requete mais il me retourne uniquement un chiffre qui n'est pas correcte et uniquement pour une seule société.

    mon schema exact est le suivant :

    la table Client
    ID Nom ....
    cl1 client 1
    cl2 client 2
    ....

    la table Société
    ID Nom ....
    sc1 société1
    sc2 société2
    ....

    la table Affectation

    ID Societé DateDebut DateFin
    cl1 sc1 10/02/2009 15/06/2009
    cl1 sc2 16/06/2009 15/06/2010
    cl2 sc1 11/01/2009 15/09/2009


    la table Operation

    ID IDDoc
    cl1 1
    cl1 2
    cl1 3
    cl1 4
    cl1 5
    cl2 6
    cl2 7

    la table Document

    IDDoc DateAchat
    1 10/02/2009
    2 etc
    3
    4
    5
    6
    7
    Je dois faire une requete de telle sorte que le resultat sera comme suit

    cl1 sc1 3
    cl1 sc2 2
    cl2 sc1 2

    pourriez vous m'aider ?

  9. #9
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    mon post n'est pas compréhensible ?

Discussions similaires

  1. demande d'aide pour faire un requete sql
    Par carmen256 dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/04/2006, 09h50
  2. [VBA-E]besoin d'aide pour faire une boucle
    Par mikazounette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2006, 14h04
  3. cmt se connecté a oracle pour faire une requete avec python
    Par dipajero dans le forum Bibliothèques tierces
    Réponses: 6
    Dernier message: 28/12/2005, 20h22
  4. Aide pour optimiser une requete
    Par Akanath dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/09/2005, 11h05
  5. En difficulté pour faire une requete
    Par Fonzy17 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/03/2005, 10h56

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