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

Requêtes MySQL Discussion :

Requête Full Join


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2015
    Messages : 41
    Points : 53
    Points
    53
    Par défaut Requête Full Join
    Bonjour
    J'ai un table 'sheetsfiles' et un autre 'comments' ce dernier et liée avec 'sheetsfiles' grace à un clé étranger id_files je veux récuperer tous les ligne de sheetsfiles ainsi que le nimmbre des comments associé à chaque ligne de sheetsfiles .J'ai essayé avec Full Join ça marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select sh.id_sheet,sh.name,sh.visibilite,sh.url,sh.add_date,sh.extension,COUNT(id_comment) as nb 
    from sheetsfiles AS sh 
    FULL JOIN comments 
    ON sh.id_sheet=id_file

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2015
    Messages : 3
    Points : 10
    Points
    10
    Par défaut
    J'utiliserai plutôt un GROUP BY, quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT sh.id_sheet,sh.name,sh.visibilite,sh.url,sh.add_date,sh.extension,COUNT(*) as nb 
    FROM sheetsfiles AS sh 
    INNER JOIN comments AS c
    ON sh.id_sheet=c.id_file
    GROUP BY sh.id_sheet,sh.name,sh.visibilite,sh.url,sh.add_date,sh.extension
    Je n'ai pas testé le code et j'utilise plutôt sql server mais la requête devrait être très proche si ce n'est identique.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Février 2015
    Messages : 41
    Points : 53
    Points
    53
    Par défaut
    Merci pour votre réponse
    votre proposition me donne seulement les lignes des sheetsfiles ayant une référence au niveau de comments (seulement les fichiers ayant des commentaires)
    or mois je veux afficher tous les fichiers

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2015
    Messages : 3
    Points : 10
    Points
    10
    Par défaut
    Effectivement. Pour afficher tous les sheetsfiles, même ceux sans commentaire, il faut utiliser un LEFT JOIN.
    Le COUNT ne peut plus se faire sur le nombre de ligne (*) sinon on aurait toujours 1 minimum. Le COUNT sur autre chose que * ne compte pas ce qui vaut null donc tu devrais bien avoir 0 s'il n'y a pas de commentaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT sh.id_sheet,sh.name,sh.visibilite,sh.url,sh.add_date,sh.extension,COUNT(c.id_comment) as nb 
    FROM sheetsfiles AS sh 
    LEFT JOIN comments AS c
    ON sh.id_sheet=c.id_file
    GROUP BY sh.id_sheet,sh.name,sh.visibilite,sh.url,sh.add_date,sh.extension

    Encore une fois, je n'ai pas ce qu'il faut pour tester sous la main

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut hachem03.

    Le FULL JOIN n'existe pas sous MySql, mais on peut trouver son équivalent.
    Il suffit de faire deux requêtes, l'une avec "left outer join" et l'autre avec "right outer join", comme dans l'exemple ci-après :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    --------------
    SELECT *
    from             `ecrivains` as tb1
    LEFT  OUTER JOIN `livres`    as tb2
    ON  tb1.clef = tb2.clef
     
    UNION
     
    SELECT *
    from             `ecrivains` as tb1
    RIGHT OUTER JOIN `livres`    as tb2
    ON  tb1.clef = tb2.clef
    --------------
     
    +------+------------+-----------+------------+----------------------+------------+--------------+------+------------------------+----------+---------+--------+
    | clef | nom        | prenom    | naissance  | lieu                 | mort       | repos        | clef | titre                  | parution | genre   | prix   |
    +------+------------+-----------+------------+----------------------+------------+--------------+------+------------------------+----------+---------+--------+
    | Bal  | Balzac     | Honoré    | 1799-05-20 | Tours                | 1850-08-18 | Paris        | Bal  | Le Père Goriot         | 1834     | Roman   |   0.00 |
    | Bal  | Balzac     | Honoré    | 1799-05-20 | Tours                | 1850-08-18 | Paris        | Bal  | Eugénie Grandet        | 1833     | Roman   | 100.00 |
    | Duf  | Dumas Fils | Alexandre | 1824-07-27 | Paris                | 1895-11-27 | Marly-le-Roi | Duf  | La Dame Aux Camélias   | 1852     | Théatre | 110.00 |
    | Dup  | Dumas Père | Alexandre | 1802-07-24 | Villiers-Cotterêts   | 1870-12-05 | Puys         | Dup  | Vingt ans après        | 1845     | Roman   |  80.00 |
    | Dup  | Dumas Père | Alexandre | 1802-07-24 | Villiers-Cotterêts   | 1870-12-05 | Puys         | Dup  | Les Trois Mousquetaire | 1844     | Roman   |  80.00 |
    | Fla  | Flaubert   | Gustave   | 1821-12-12 | Rouen                | 1880-05-08 | Croisset     | Fla  | Madame Bovary          | 1857     | Roman   |  99.50 |
    | Hug  | Hugo       | Victor    | 1802-01-26 | Besancon             | 1885-05-22 | Paris        | Hug  | Les Misérables         | 1862     | Roman   | 148.50 |
    | Hug  | Hugo       | Victor    | 1802-01-26 | Besancon             | 1885-05-22 | Paris        | Hug  | Les Contemplations     | 1856     | Poésie  |  78.50 |
    | Hug  | Hugo       | Victor    | 1802-01-26 | Besancon             | 1885-05-22 | Paris        | Hug  | Hernani                | 1830     | Théatre | 120.00 |
    | Rim  | Rimbaud    | Arthur    | 1854-10-20 | Charleville-Mézières | 1891-11-10 | Marseille    | NULL | NULL                   | NULL     | NULL    |   NULL |
    | San  | Sand       | George    | 1804-07-01 | Paris                | 1876-06-08 | Nohant-Vic   | NULL | NULL                   | NULL     | NULL    |   NULL |
    | Ver  | Verlaine   | Paul      | 1844-03-30 | NULL                 | 1896-01-08 | Paris        | Ver  | Poèmes Saturniens      | 1866     | Poésie  |  90.50 |
    | Zol  | Zola       | Emile     | 1840-04-02 | Paris                | 1902-09-29 | Paris        | NULL | NULL                   | NULL     | NULL    |   NULL |
    | NULL | NULL       | NULL      | NULL       | NULL                 | NULL       | NULL         | Ste  | Le Rouge et le Noir    | 1831     | Roman   |  98.50 |
    | NULL | NULL       | NULL      | NULL       | NULL                 | NULL       | NULL         | Ste  | La Chartreuse de Parme | 1839     | Roman   | 110.50 |
    +------+------------+-----------+------------+----------------------+------------+--------------+------+------------------------+----------+---------+--------+
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. [DML]Fusion de deux requêtes full Outer join colonne null
    Par peuplier dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/01/2009, 15h22
  2. problème de "collation" dans une requête (sans JOIN)
    Par maibey dans le forum Développement
    Réponses: 2
    Dernier message: 03/06/2008, 09h53
  3. [Access2003]-Perte de données requête left join
    Par alcabk dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/10/2007, 11h45
  4. Requête SQL + JOIN
    Par stef51 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 12/06/2007, 15h49
  5. Full Join requette
    Par ess2007 dans le forum SQL
    Réponses: 1
    Dernier message: 12/04/2007, 17h54

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