Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 13h49   #1
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 125
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 125
Points : 29
Points : 29
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 :
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 :
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.
xoum89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 14h11   #2
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
bonjour


cela aurait cool de formater la requete (plus lisible)

Code :
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 :
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+
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 17h46   #3
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 125
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 125
Points : 29
Points : 29
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 :
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.
xoum89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 08h34   #4
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
bonjour

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

Code :
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
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 10h26   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
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 !

Citation:
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 :
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
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 20h20   #6
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 125
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 125
Points : 29
Points : 29
Merci pour vos réponse.

La requête fait bien ce que je veux sauf pour aujourd'hui et demain.
Code :
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é.
xoum89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 08h42   #7
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
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 :
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
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 09h52   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par xoum89
@CinePhil : Je ne comprend rien à la requête que tu as montré.
Ton besoin, exprimé dans le premier message :
Citation:
faire ressortir filename,fileSize ainsi que le nombre de fois qu'ils ont était Inséré dans la table listLink.
Ma requête :
Code :
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é.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 15h47   #9
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 125
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 125
Points : 29
Points : 29
@Dehorter_olivier :
Voici ma requête principale qui fonctionne bien.

Code :
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.
xoum89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 15h55   #10
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
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 !

?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 16h13   #11
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
salut

cinephil a raison sa requete devrait fonctionner


la mienne un peu plus bourrin
devrait etre avec cette forme
Code :
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
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/03/2011, 17h10   #12
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 125
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 125
Points : 29
Points : 29
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 :
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.
xoum89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 17h34   #13
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
en mettant les conditions ad-hoc

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

Code :
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
Citation:
+0
apres current_date ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 17h45   #14
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 125
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 125
Points : 29
Points : 29
Non ce que je veux c'est un autre champ en plus mais avec la même requête de départ.

Code :
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.
xoum89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 18h02   #15
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Code :
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
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/03/2011, 19h43   #16
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
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 ?

Citation:
En gros comment introduire la requête ci-dessous dans la requête principale
Code :
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 :
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 ?

Citation:
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 !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 21h41   #17
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 125
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 125
Points : 29
Points : 29
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
xoum89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h53.


 
 
 
 
Partenaires

Hébergement Web