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 :

Problème de Requête (COUNT)


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut Problème de Requête (COUNT)
    Bonjour,

    Cela fait plusieur heures que j essaye de trouver comment effectuer la requete suivante, meme si je suppose qu elle est toute simple :

    Ma base de données est une SQLite3 et contient des lignes qui lient des points. Donc un tableau "Links" qui contient notemment:

    LinkID, Start_node, End_node

    J aimerais pourvoir chercher parmis toutes mes lignes, quelles sont celles qui ne sont reliés a aucunes autres. (Donc Start_node et End_node n'apparaissent qu une fois). Mais j avoue que je galere complet ...

    (Ce que je pense savoir faire meme si je comprends pas trop pourquoi ca marche, c'est chercher les lignes qui ont comme point de depart, un point qui n'est le point de depart d aucune autre ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select start_node_id, Count(start_node_id) from links 
    group by start_node_id
    Having Count(start_node_id)=1
    je ne sais pas si ca peut aider)

    Merci

    Slumpy

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    Une piste en passant par des NOT EXISTS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select *
    from t_nod a
    where not exists (select null from t_nod b where a.id <> b.id and a.str_nod = b.str_nod)
    and not exists (select null from t_nod b where a.id <> b.id and a.end_nod = b.end_nod);

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 400
    Points
    28 400
    Par défaut
    Quelque chose comme ça ?
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    SELECT  *
    FROM    links   lnk
    WHERE   NOT EXISTS
            (   SELECT  NULL
                FROM    links   ln1
                WHERE   ln1.start_node  = lnk.start_node
                    AND ln1.linkid      <> lnk.linkid 
            )
        AND NOT EXISTS
            (   SELECT  NULL
                FROM    links   ln1
                WHERE   ln1.start_node  = lnk.end_node
                    AND ln1.linkid      <> lnk.linkid 
            )
        AND NOT EXISTS
            (   SELECT  NULL
                FROM    links   ln1
                WHERE   ln1.end_node    = lnk.start_node
                    AND ln1.linkid      <> lnk.linkid 
            )
        AND NOT EXISTS
            (   SELECT  NULL
                FROM    links   ln1
                WHERE   ln1.end_node    = lnk.end_node
                    AND ln1.linkid      <> lnk.linkid 
            )
    ;

  4. #4
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Arf ça m’énerve, quand je vois la solution je me demande toujours comment j'y ai pas pensé ...

    Merci les gars !

  5. #5
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Rebonjour,

    Je suis a present bloqué sur une autre requete, que je me permets de poster ici puisqu'elle s'applique à la meme table.

    Mon probleme est le suivant: J aimerais extraire les lignes dont je suis sur que TOUS les noeuds d'arrivés n'ont qu'un meme noeud de depart ...

    Pour etre plus clair, dans l'exemple ci-dessous, je ne voudrais pas que la requete me renvois les lignes du cas numero 2 puisque le noeud end3 a un autre depart que start2, mais me renvois un cas numero 1.



    J espere etre clair.

    Merci

    Slumpy.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    J aimerais extraire les lignes dont je suis sur que TOUS les noeuds d'arrivés n'ont qu'un meme noeud de depart ...
    Donc les noeuds d'arrivée ne peuvent avoir au maximum qu'un seul noeud de départ.

    1) Quelles sont les fins n'ayant qu'un seul départ ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT End_node
    FROM links
    GROUP BY End_node
    HAVING COUNT(Start_node) = 1
    Cas 1 : end1, end2, end3
    Cas 2 : end1, end2

    2) Combien de fins ont les départs dont les fins n'ont qu'un seul départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT l1.Start_node, COUNT(l1.End_node) AS nb_end_node
    FROM links l1
    INNER JOIN
    (
    	SELECT End_node
    	FROM links
    	GROUP BY End_node
    	HAVING COUNT(Start_node) = 1
    ) tmp ON tmp.End_node = l1.End_node
    GROUP BY l1.Start_node
    Cas 1 : start2, 3
    Cas 2 : start2, 2

    3) Quels sont les départs dont les fins n'ont qu'un seul départ qui ont un nombre de fins égal à leur nombre de fins n'ayant qu'un seul départ ?
    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
    17
    SELECT tmp2.Start_node
    FROM links l2
    INNER JOIN
    (
    	SELECT l1.Start_node, COUNT(l1.End_node) AS nb_end_node
    	FROM links l1
    	INNER JOIN
    	(
    		SELECT End_node
    		FROM links
    		GROUP BY End_node
    		HAVING COUNT(Start_node) = 1
    	) tmp ON tmp.End_node = l1.End_node
    	GROUP BY l1.Start_node
    ) tmp2 ON tmp2.Start_node = l2.Start_node
    GROUP BY tmp2.Start_node, tmp2.nb_end_node
    HAVING COUNT(l2.End_node) = tmp2.nb_end_node
    ------- départ, nb total de fins, nb de fins n'ayant qu'un seul départ
    Cas 1 : s2, 3, 3
    Cas 2 : s2, 3, 2 <== éliminé par la requête.

Discussions similaires

  1. [MySQL-5.6] Problème de requête (COUNT, GROUP BY) sur plusieurs tables
    Par alexisavenel dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/10/2014, 12h47
  2. Problème requête count multiples
    Par kro001 dans le forum Débuter
    Réponses: 3
    Dernier message: 05/10/2007, 21h10
  3. Problème de requête SQL avec DISTINCT et COUNT ?
    Par [ZiP] dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/01/2007, 17h11
  4. Problème de requête count(*) avec DB2
    Par elsodiop dans le forum DB2
    Réponses: 3
    Dernier message: 30/11/2006, 16h11
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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