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 avec les jointures


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut Problème avec les jointures
    Bonjours, cela doit être une question encore récurrente, et je m'en m'excuse par avance, mais j'ai besoin de votre aide.

    Voici mes tables :
    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
    CREATE TABLE `link` (
      `id` mediumint(1) NOT NULL AUTO_INCREMENT,
      `idUser` mediumint(1) NOT NULL,
      `link` varchar(200) NOT NULL,
      `filename` varchar(40) NOT NULL,
      `fileDescription` text NOT NULL,
      `fileSize` float NOT NULL,
      `actif` tinyint(1) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `LINK_DoubleFilename` (`filename`),
      UNIQUE KEY `LINK_User_DoubleLink` (`idUser`,`link`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
     
    CREATE TABLE `listLink` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `idLink` mediumint(1) NOT NULL,
      `date` date NOT NULL,
      `Campagne` tinyint(1) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `unique_Link` (`idLink`,`date`,`Campagne`),
      KEY `FOREIGN_KEY_TABLE_LINK_Campagne` (`Campagne`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    Premiererement j'ai une erreur quand j'essaye de mettre listLink en InnoDB.
    C'est pour cela que je l'ai mise en MyISAM.

    Ensuite je veux pour ma requête faire ressortir filename,fileSize ainsi que le nombre de fois qu'ils ont était Inséré dans la table listLink.

    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 filename,fileSize,count(listLink.idlink)NbUpload
    , (
        SELECT count(*) 
        FROM listLink 
        where idLink = listLink.idlink 
        AND date = CURRENT_DATE() +0
    ) Aujourdhui
    , (
        SELECT count(*) 
        FROM listLink 
        where idLink = listLink.idlink 
        AND date = CURRENT_DATE()+1
    ) Demain 
    FROM link 
    LEFT OUTER JOIN `listLink` ON link.id = listLink.idlink 
    WHERE link.idUser = 1 
    GROUP BY listLink.idlink
    Le problème c'est que il me retourne que une ligne.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    bonjour


    cela aurait cool de formater la requete (plus lisible)

    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
    SELECT Filename,
           Filesize,
           COUNT(Listlink.Idlink) Nbupload,
           (SELECT COUNT(*)
              FROM Listlink
            WHERE Idlink = Listlink.Idlink
                  AND DATE = CURRENT_DATE() + 0) Aujourdhui,
           (SELECT COUNT(*)
              FROM Listlink
            WHERE Idlink = Listlink.Idlink
                  AND DATE = CURRENT_DATE() + 1) Demain
      FROM Link
        LEFT OUTER JOIN Listlink ON Link.Id = Listlink.Idlink
    WHERE Link.Iduser = 1
    GROUP BY Listlink.Idlink
    ce serais bien de creer un cle etrangeres entre "link" et "Listlink"

    je ne vois pas de pb dans la jointure (a priori), mais j'en vois dans la gestion du GROUP by ...
    ce n'est pas curieux qu'une ligne sorte !

    je verais plutot cela

    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
    SELECT Filename,
           Filesize,
           Selection.Nbupload,
           (SELECT COUNT(*)
              FROM Listlink
            WHERE Idlink = Listlink.Idlink
                  AND DATE = CURRENT_DATE() + 0) Aujourdhui,
           (SELECT COUNT(*)
              FROM Listlink
            WHERE Idlink = Listlink.Idlink
                  AND DATE = CURRENT_DATE() + 1) Demain
     
      FROM (SELECT Listlink.Idlink,
                   COUNT(Listlink.Idlink) Nbupload
              FROM Link
                LEFT OUTER JOIN Listlink ON Link.Id = Listlink.Idlink
            WHERE Link.Iduser = 1
            GROUP BY Listlink.Idlink) AS Selection
        INNER JOIN Listlink ON Selection.Id = Listlink.Idlink
        INNER JOIN Link ON Link.Id = Listlink.Idlink

    mais il y d'autres solutions peut etre meme plus efficasse

    a+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Merci de ta réponse, en effet il manque une foreign key sur l'id mais j'avais eu un problème lors de l'insert, je m'en occuperai.

    Ensuite pour le formatage de la requête c'est sûr que c'est beaucoup mieux, je le ferai par la suite.

    J'ai corrigé une ligne de la requête que tu ma redonné
    Tu avais oublier de renommer le champs idLink en id dans la view Selection .

    Mais même après cela la requête ne renvoie rien si elle ne trouve pas de relation, alors que je voudrais qu'elle renvoie de toutes façon toutes les lignes de la table 'link'.

    EDIT J'ai modifier le code et cela fonction,
    mais pas pour les requêtes aujourd'hui et demain.


    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
       SELECT filename,
           filesize,
           Selection.Nbupload,
           (SELECT COUNT(listLink.idlink) Bool
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1 AND date = CURRENT_DATE() + 0
            GROUP BY link.id) Aujourdhui,
           (SELECT COUNT(*)
              FROM listLink
            WHERE idLink = listLink.idLink
                  AND date = CURRENT_DATE() + 1) Demain
     
      FROM (SELECT link.id,filename,filesize,
                   COUNT(listLink.idlink) Nbupload
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1
            GROUP BY link.id) AS Selection
    Encore merci de ton aide.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    bonjour

    as tu regardé si la sous requête sort quelque chose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT link.id,filename,filesize,
                   COUNT(listLink.idlink) Nbupload
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1
            GROUP BY link.id

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par xoum89 Voir le message
    Premièrement j'ai une erreur quand j'essaye de mettre listLink en InnoDB.
    C'est pour cela que je l'ai mise en MyISAM.
    Si tu ne nous dis pas quelle est l'erreur, on ne peut pas t'aider la-dessus.
    Du coup, avec MyISAM, tu perds le bénéfice des clé étrangères !

    Ensuite je veux pour ma requête faire ressortir filename,fileSize ainsi que le nombre de fois qu'ils ont été insérés dans la table listLink.
    Peut-être que quelque chose m'échappe mais il me semble que la requête suivante, beaucoup plus simple et performante que la tienne, répond au besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT l.filename, l.filesize, COUNT(ll.*) AS nb_insert
    FROM link l
    LEFT OUTER JOIN listLink ll ON ll.idLink = l.id
    GROUP BY l.filename, l.filesize

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Merci pour vos réponse.

    La requête fait bien ce que je veux sauf pour aujourd'hui et demain.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (SELECT COUNT(listLink.idlink) Bool
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1 AND date = CURRENT_DATE() + 0
            GROUP BY link.id) Aujourdhui
    La requête séparée affiche bien une ligne pour chaque id différent et compte combien de fois on l'a inséré (c'est ce que je veux).
    Mais si j'introduis cette requête dans la requête principale elle va compter les id mais pour tous les id groupés.

    Ex : la requête séparée me retournera
    2
    1
    La requête dans celle principale va me retourner
    3

    En espérant être assez claire.
    Merci.

    EDIT : @CinePhil : Je ne comprend rien à la requête que tu as montré.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    bonjour

    pourrais-tu indiquer ta requête principale ?

    dans la sous requête, il y a quelque chose de bizarre; il manque la clé pour faire le lien avec la requête principale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (SELECT  link.id,
                           COUNT(listLink.idlink) Bool
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1 AND date = CURRENT_DATE() + 0
            GROUP BY link.id) Aujourdhui

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par xoum89
    @CinePhil : Je ne comprend rien à la requête que tu as montré.
    Ton besoin, exprimé dans le premier message :
    faire ressortir filename,fileSize ainsi que le nombre de fois qu'ils ont était Inséré dans la table listLink.
    Ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT l.filename, l.filesize, COUNT(ll.*) AS nb_insert
    FROM link l
    LEFT OUTER JOIN listLink ll ON ll.idLink = l.id
    GROUP BY l.filename, l.filesize
    La traduction de cette requête :
    "Sélectionner les colonnes filename et filesize de l'alias de table l et compter le nombre de lignes de l'alias de table ll
    de la table link d'alias l
    jointe à gauche avec la table listlink d'alias ll sur l'égalité de ll.idLink et de l.id
    en groupant les résultat sur le couple de colonnes l.filename et l.filesize."

    Autrement dit : Compter le nombre de lignes dans listLink pour chaque link.

    Selon moi, ça correspond exactement à ton besoin. Ou alors, ton besoin est mal exprimé.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    @Dehorter_olivier :
    Voici ma requête principale qui fonctionne bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     SELECT filename,
           filesize,
           Selection.Nbupload
     
      FROM (SELECT link.id,filename,filesize,
                   COUNT(listLink.idlink) Nbupload
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1
            GROUP BY link.id) AS Selection
    "il manque la clé pour faire le lien avec la requête principale "

    Je suis d'accord avec toi il manque la clé, mais c'est là où je coince car je ne sais pas comment l'indiquer.

    @cinePhil : Sauf que ta requête ne peut pas marcher (d’ailleurs elle ne fonctionne pas) car en faisant un left join on lie les deux tables en une seul.
    Donc count(11.*) renverra une erreur.
    La requête principale (que j'ai remis dans ce poste) fonctionne comme il faut en me listant tous les lignes plus le nombre de fois inséré dans la table listLink.

    Maintenant j'ai juste à résoudre ce que Dehorter_olivier.
    Car je ne sais pas lier des requêtes imbriquées.

    Encore merci.

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    C'est vrai qu'il fallait faire un COUNT(ll.idLink) au lieu d'un COUNT(ll.*) mais ta sous-requête ressemble énormément à la mienne !
    D'ailleurs je ne vois pas à quoi te sert la requête principale puisque tu ne fais que sélectionner les colonnes de la sous-requête !

    Bref, à un détail prêt, ma requête était bonne et je ne vois pas pourquoi tu dis qu'elle ne fonctionne pas !

    ?

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    salut

    cinephil a raison sa requete devrait fonctionner


    la mienne un peu plus bourrin
    devrait etre avec cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT Link.Filename,
           Link.Filesize,
           Selection.Nbupload
      FROM (SELECT Link.Id,
                   COUNT(Listlink.Idlink) Nbupload
              FROM Link
                LEFT OUTER JOIN Listlink ON (Link.Id = Listlink.Idlink)
            WHERE Link.Iduser = 1
            GROUP BY Link.Id) AS Selection
        INNER JOIN Link ON (Link.Id = Selection.Id)
    j'aime bien les parenthese donc j'en ai rajoute

    a+
    olivier

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Oki Merci Cinephil, c'est vrai que ta requête fonctionne et en plus est beaucoup plus simple donc consomme moins de ressource.

    Mais comment je peux inclure un champ qui indique le nombre de liens qui est dans la table listLink par rapport à la date d'aujourd'hui.

    En gros comment introduire la requête ci-dessous dans la requête principale (Donc celle que cinePhil a refait)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (SELECT COUNT(listLink.idlink) Bool
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1 AND date = CURRENT_DATE() + 0
            GROUP BY link.id) Aujourdhui
    Merci à vous, et je m'excuse d’être lent à la détente mais j'ai passé trop de temps sur le projet seul.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    en mettant les conditions ad-hoc

    en utilisant la requete de cinephil (et si j'ai bien compris)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT l.filename, l.filesize, COUNT(ll.idlink) AS nb_insert
    FROM link l
    LEFT OUTER JOIN listLink ll ON (ll.idLink = l.id 
                                                 AND link.idUser = 1 
                                                 AND date = CURRENT_DATE)
    GROUP BY l.filename, l.filesize
    pourquoi le
    +0
    apres current_date ?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Non ce que je veux c'est un autre champ en plus mais avec la même requête de départ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT l.filename, l.filesize, COUNT(ll.idLink) AS nb_insert,(SELECT COUNT(listLink.idlink) Bool
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1 AND date = CURRENT_DATE()
            GROUP BY link.id) Aujourdhui
    FROM link l
    LEFT OUTER JOIN listLink ll ON ll.idLink = l.id
    GROUP BY l.filename, l.filesize
    Genre comme cela mais l'imbrication de la requête est mal faite, car il faudrait qu'il le fasse pour chaque idLink et non pour tous.


    Pour le +0, pas d'explication parce que parfois je fais une requête avec +1 mais oui on peut l'enlever.

  15. #15
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT l.filename, l.filesize, 
    COUNT(ll.idLink) AS nb_insert,
    (SELECT COUNT(listLink.idlink) Bool
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1 AND date = CURRENT_DATE() 
                     AND link.id = l.id
            GROUP BY link.id) Aujourdhui
    FROM link l
    LEFT OUTER JOIN listLink ll ON ll.idLink = l.id
    GROUP BY l.filename, l.filesize

    si telle est la relation !

    et formater les requetes facilite leur lecture

  16. #16
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par xoum89 Voir le message
    Mais comment je peux inclure un champs qui indique le nombre de lien qui est dans la table listLink par rapport à la date d'aujourd'hui.
    "nombre de lien" (...) "par rapport à la date d'aujourd'hui". Ça ne veut rien dire !
    Tu veux le nombre de liens enregistrés aujourd'hui dans la table listLink ?

    En gros comment introduire la requête ci-dessous dans la requête principale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (SELECT COUNT(listLink.idlink) Bool
              FROM link
                LEFT OUTER JOIN listLink ON link.id = listLink.idLink
            WHERE link.idUser = 1 AND date = CURRENT_DATE() + 0
            GROUP BY link.id) Aujourdhui
    Comme la colonne "date" - qui ne devrait d'ailleurs pas s'appeler ainsi car c'est un mot réservé du langage SQL - fait partie de la table située à droite de la jointure externe gauche, placer une condition de restriction sur cette colonne revient à transformer la jointure externe en jointure interne. Autrement dit, tu n'auras pas tous les links.
    Si tu les veux tous, il faut transporter la condition de restriction dans la condition de jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT COUNT(listLink.idlink) Bool -- Euh... c'est un comptage, pas un booléen !
    FROM link
    LEFT OUTER JOIN listLink 
      ON link.id = listLink.idLink
      AND date = CURRENT_DATE()
    WHERE link.idUser = 1
    GROUP BY link.id
    Avec cette requête, tu comptes, pour chaque link de l'utilisateur 1, ceux qui ont été insérés aujourd'hui.
    C'est ça que tu veux ?

    Non ce que je veux c'est un autre champs en plus mais avec la même requête de départ.
    Alors exprime mieux ton besoin parce que je ne comprends plus !
    Lis la phrase en bleu de ma signature, respire un grand coup et applique le principe !

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    dehorter_olivier à très bien répondu à ma demande.

    Ma demande était bien exprimée dans plusieurs messages du dessus.
    En essayant à chaque fois de la reformuler d'une autre manière dans chaque différent message.

    Mais merci


    Edit : Bool, une requête simple sans avoir vue la création de la table peu perturber certaine façon de coder.
    Mais comme on ne peux mettre qu'une seule et unique occurence par jour par utilisateur dans ma table, cela ce transforme bien en Bool

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

Discussions similaires

  1. Problème avec les jointures multiples
    Par kriskadespe dans le forum Langage SQL
    Réponses: 13
    Dernier message: 12/08/2011, 11h46
  2. [MySQL] Problème avec les jointures
    Par Akim13 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 29/05/2011, 16h02
  3. Problème avec les jointures
    Par exqo77 dans le forum JDBC
    Réponses: 6
    Dernier message: 17/02/2010, 10h06
  4. [MySQL] Problème avec les jointure pour un menu
    Par Glocman dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/07/2006, 17h44
  5. Réponses: 2
    Dernier message: 21/07/2005, 12h05

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