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

Bases de données Delphi Discussion :

Interbase et left join


Sujet :

Bases de données Delphi

  1. #1
    Zog
    Zog est déconnecté
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Interbase et left join
    voilà, en gros jai un schema de bdd qui se presente comme suit
    ==> table incidents avec num_incident ,..., org_id

    table organisme avec num_org,num_ssorg,num_racine

    et un incident appartient obligatoirement a un organisme (sachant que la table organisme est en fait un arbre)

    mon probleme est de recuperer le nombre d'incident par organisme racine (ie qui n'ont pas de pere)

    donc je fais une requete de ce style

    Select distinct oo.org_lib,count(*)
    from orgahum o,orgahum oo,incident i
    where oo.org_id=o.org_pere
    and i.org_id=o.org_id
    group by oo.org_lib
    order by oo.org_lib


    ceci me ramene le resultat que je souhaite, toutefois j'aimerais voir aussi apparaitre les autres organisme racine dont le nombre d'incident est nul

    si qqun pouvait maider

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut Re: Interbase et left join
    Quand vous parlez d'un arbre, c'est un peu par abus de langage, ou vous vous êtes trompés dans votre requete. Car à priori votre requete compte le nombre d'incident des organismes parents. Donc si vous n'avez que deux niveau dans votre arbre (org_pere pointe donc toujours vers un organisme racine (qui à un org_pere null)) votre requete va bien compter les incidents enfants par parent et comme il n'y a que deux niveau le parent est forcément racine.

    Par contre si vous avez un arbre de plus d'un niveau, votre requete ne compte pas les incidents de l'organisme racine mais les incidents des enfants d'un parent (donc pas forcément racine).

    En plus votre requete ne compte pas les incidents (s'il vous en avez) qui seraient attachés directement à un organisme racine.

    Autre remarque : votre requete serait plus lisible si vous utilisiez les balises code dans ce forum... et les jointures normalisées du SQL.

  3. #3
    Zog
    Zog est déconnecté
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    certes ^^
    j'ai réparé dans tous les cas

    ça donne un truc comme ça
    ==>
    Select distinct count(inci_num) ,oo.org_lib,sum(dem_temps)
    from incident i right outer join orgahum o on i.org_id=o.org_id '
    left join demarche d on d.inci_num=i.inci_num;

    je sais c un peu louche, mais je recupere une bdd faites ya 70 ans .... et jdois faire de la maintenance

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut

    Comme vous dites un truc comme ça...
    car votre truc comme ça ne fonctionne pas... La requete est fausse ou du moins il n'y en a que la moitier...

    1-Merci de lire les règles du forum
    2-De bien expliquer votre probleme, et de poster dans le bon forum...(A priori votre question serait mieux placée dans le forum SQL)
    3-D'utiliser les balises code pour encadrer le code que vous mettez dans le forum comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select Count(i.inci_num), oo.org_lib, sum(i.dem_temps)
    from indident i 
    inner join orgahum o on (o.org_id=i.org_id)
    right join orgahum oo on (oo.org_id=o.org_pere)
    group by oo.org_lib;
    Pour rendre plus lisible votre code.

    PS : cette requete ne fonctionne pas s'il y a plus d'un niveau de parent et si vous attribuez des incidents aux orgahum de type racine...

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    je sais c un peu louche, mais je recupere une bdd faites ya 70 ans
    70 ans, on ne voit vraiment plus le temps passer sur le forum
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

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

Discussions similaires

  1. Creer une requete avec des LEFT JOIN et des GRO
    Par donbuz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/09/2004, 15h53
  2. count() dans *plusieurs* LEFT JOIN
    Par silver_dragoon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2004, 17h20
  3. 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
  4. Non coincident MySQL (Left Join)
    Par Remiguel dans le forum Requêtes
    Réponses: 6
    Dernier message: 03/11/2003, 21h25
  5. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57

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