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 :

requête SQL incomprise


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Par défaut requête SQL incomprise
    Slt à tous,

    j'aimerais que vous m'aidiez à comprendre cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select redacteur
    From PARUTION
    Group by redacteur
    Having count (*) >= all (select (count(*))
                               From PARUTION
                               Group by redacteur)
    Elle est censée m'afficher le(s) redacteur(s) ayant le plus participé à la conception des parutions mais je ne comprends pas pourquoi elle a été faite de cette maniere.

    Peut être une mauvaise compréhension du count(*)...
    Merci d'avance

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Qu'est-ce qui vous dérange exactement ?

    .
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Par défaut
    je ne comprend tt simplement pas la requête.
    le having count(*) par ex ,je ne sais pas si il permet de faire une condition sur le nombre de lignes dans le champ redacteur ou la table entiere ?

    Voila ce que je comprends:

    le nombre de ligne dans le champ redacteur doit être >ou = au nombre de redacteur en comptant egalement les doublons(all(select count(*))) ce qui n'a rien à voir au résultant attendu.

    Merci de m'eclairer

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Imagine (On va se tutoyer )

    Dans la colonne rédacteur tu as...

    redacteur
    Lovecraft
    King
    Clark
    Lovecraft
    Lovecraft
    La requête te renverra "Lovecraft"

    le having count(*) par ex ,je ne sais pas si il permet de faire une condition sur le nombre de lignes dans le champ redacteur ou la table entiere ?
    Quelle différence vois tu, la sélection se passe sur la colonne (et non le champs) rédacteur !

    Pour moi cela retourne le(s) rédacteur(s) (Du fait du = en plus) qui apparaît le plus souvent dans la colonne...

    Donc
    Elle est censée m'afficher le(s) redacteur(s) ayant le plus participé à la conception des parutions
    C'est effectivement le cas !

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Par défaut
    pourquoi garder le ALL dans la condition "having" est il necessaire?
    ya t'il une autre facon d'avoir ce resultat ?

    Merci dton aide

  6. #6
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    pourquoi garder le ALL dans la condition "having" est il necessaire?
    Ben tout est lié... et il y a une fonction d'agrégat !

    Alors comme il faut aussi que l'on bosse et qu'il se fait tard

    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
    USE DB_TEST
    GO
     
    CREATE TABLE redacteur
    (
    ID_numero INT NOT NULL,
    yup_number INT NOT NULL,
    date_creation DATETIME NOT NULL,
    nom CHAR(20) NOT NULL,
    prenom VARCHAR(20) NOT NULL
    )
    -- Je passe mail et id_manager ^^
    GO
     
    INSERT INTO redacteur values (1, 0001, '20090101 12:31:28', 'Toto', 'Blop')
    INSERT INTO redacteur values (2, 0002, '20090101 12:31:28', 'Tata', 'Blap')
    INSERT INTO redacteur values (3, 0003, '20090701 12:31:28', 'Titi', 'Blip')
    INSERT INTO redacteur values (4, 0003, '20090901 12:31:28', 'Titi', 'Blip')
    INSERT INTO redacteur values (5, 0001, '20090401 12:31:28', 'Tata', 'Blap')
    INSERT INTO redacteur values (6, 0003, '20090201 12:31:28', 'Toto', 'Blop')
    INSERT INTO redacteur values (7, 0002, '20090301 12:31:28', 'Toto', 'Blop')
    INSERT INTO redacteur values (8, 0001, '20091001 12:31:28', 'Tata', 'Blap')
    GO
    Le fait d'avoir le = donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT nom
    FROM redacteur
    GROUP BY nom
    HAVING count (*) >= ALL (SELECT (count(*))
                               FROM redacteur
                               GROUP BY nom)
    Résultat
    Nom
    Tata
    Toto
    Ajoutons un Toto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO redacteur values (9, 0001, '20091101 12:31:28', 'Toto', 'Blop')
    Avec la même requête:
    Nom
    Toto
    Peut-être y a t-il une solution plus simple mais, là je passe la main car plus d'idée ce soir, trop fatigué

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



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

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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