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

Langage SQL Discussion :

jointure sur une même table


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut jointure sur une même table
    bonjour,

    j'ai une table de fiches avec une date de création, un user de création, une date de contrôle et un user de contrôle.

    je voudrais tous simplement obtenir une liste avec rupture par date du nombre de fiche créer et contrôler par user.

    sachant qu'une fiche créer n'est pas forcément contrôlée :

    ex:
    date nom fiches crées fiches controler
    13/02/2004 dushoml 3 0
    13/02/2004 efef 1 5
    13/02/2004 efefef 0 2

    14/02/2004 dushoml 2 8
    14/02/2004 jiikk 0 2

  2. #2
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Bonjour,
    une solution du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select a.date_a, a.nom, count(*), count2 
    from table a
    left outer join
     (select b.date_b, b.nom, count(*) as count2 from table b 
    group by b.date_b, b_nom) c 
    on a.date_a = c.date_a and
         a.nom = c.nom
    group by a.date_a, a.nom, count2
    Je ne suis pas trop sûre de la syntaxe mais le principe doit être ok.
    (date_a est la date de création, date_b la date de contrôle)
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut presque
    c'est presque ça sauf que je n'ai pas les cas
    ou une personne n'a fait que contrôler une fiche mais n'a pas créer de fiche.

    en fait une fiche n'est pas forcément créer et contrôler par une même personne et il ya ds gens qui contrôlent sans ja mais créer et vice-versa.


    merci.

  4. #4
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Dans ce cas, tu peux faire un Union. la deuxième partie contiendrait ces cas. (tu peux utiliser la fonction not exist)
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    oui mais dans le cas de l'union je n'arrive pas à distinguer le nombre de fiches créer du nombre de fiches contrôler

  6. #6
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Dans le code suivant, tu as toujours le nombre de fiches créées en premier suivi du nombre de fiches controlées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    select a.date_a, a.nom, count(*), count2 
    from table a 
    left outer join 
     (select b.date_b, b.nom, count(*) as count2 from table b 
    group by b.date_b, b_nom) c 
    on a.date_a = c.date_a and 
         a.nom = c.nom 
    group by a.date_a, a.nom, count2 
    union
    select d.date_b, d.nom, 0, count(*) 
    from table d 
    where not exist 
     (select *  from table e
    where e.date_a = d.date_b  and e.nom = d.nom)
    group by d.date_b, d.nom
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut ok !
    c good,

    merci bien.

    pour info c exists avec un s , je t'en tiendrai pas rigueur

  8. #8
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    ok ! (mci pour l'info...)
    a+
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

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

Discussions similaires

  1. Jointure sur une même table
    Par JmL40 dans le forum Développement
    Réponses: 6
    Dernier message: 14/12/2010, 15h26
  2. Jointure sur une même table
    Par franquis dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/04/2010, 11h49
  3. Auto-jointure sur une même table
    Par West01 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/10/2008, 15h46
  4. [1.x] Jointure sur une même table
    Par tyx dans le forum Symfony
    Réponses: 1
    Dernier message: 04/08/2008, 11h19
  5. Auto jointure (sur une même table)
    Par freestyler dans le forum Langage SQL
    Réponses: 16
    Dernier message: 20/05/2008, 15h16

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