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

MS SQL Server Discussion :

= NULL, ne marche pas comment faire ?


Sujet :

MS SQL Server

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut = NULL, ne marche pas comment faire ?
    Bonsoir à tous,

    J'ai une FK qui peux avoir la valeur null.

    Et donc, dans ma procédure stocké, je peux avoir le cas où :

    Ce qui poserai problème.

    Alors certains disent qu'il faut éviter la valeur null, certes mais si ça un sens, comment faire ? (puisque une FK peut être null).

    J'aurai cru que '=null' aurait le même sens que 'is null', mais non null n'est pas une valeur. Y a t il une astuce alors ?

    Merci d'avance pour votre aide.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    NULL n'est egal à rien... Meme pas à NULL.
    Il faut utiliser :
    FK is null

    En même temps, tu parles de procédure et balance une condition ? assignation ?

    Que représente ton FK = NULL ?

    Poste ton code qu'on y voie peut etre un peu plus clair...

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    merci pour ta réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @RUB_ID		T_GUID,
    @SURUB_ID	T_GUID,
    AS
    SELECT     *
    FROM       IMAGE, 
    WHERE     FK_RUB = @RUB_ID AND FK_SURUB = @SURUB_ID)
    Ma requête simplifié c'est ça.

    Avec @SUBRUB_ID qui peut avoir la valeur null (si une image appartient directement à une rubrique ...).
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Premier cas : @SURUB_ID IS NOT NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT     *
    FROM       IMAGE, 
    WHERE     FK_RUB = @RUB_ID AND FK_SURUB = @SURUB_ID)
    Deuxième cas : @SURUB_ID IS NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT     *
    FROM       IMAGE, 
    WHERE     FK_RUB = @RUB_ID)
    Je te propose de faire du SQL Dynamique en fonction de ton paramètre @SURUB_ID.

    M'enfin, moi, au CTIFL, c'est comme cela que j'ai résolu le problème.

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    D'abord merci pour ta réponse.

    J'ai pensé à cette solution (mettre un 'if else if' c'est bien ce que tu propose ?), mais si ce n'est pas le seul champs qui risque d'être null ? Et si dans notre requête y a déjà une série de IF ?

    En même temps si c'est la seul solution
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pourriez écrire votre requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT mesColonnes
    FROM monSchema.IMAGE,
    WHERE (
    		(@RUB_ID IS NULL OR FK_RUB = @RUB_ID)
    		AND
    		(@SURUB_ID IS NULL OR FK_SURUB = @SURUB_ID)
    	)
    Attention : NULL n'est pas une valeur, il représente l'absence de valeur.
    C'est pour cela que pour tester vous devez mettre IS (NOT) NULL, et que vous ne pouvez pas utiliser " = "

    @++

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Merci pour votre réponse !

    Citation Envoyé par elsuket Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT mesColonnes
    FROM monSchema.IMAGE,
    WHERE (
    		(@RUB_ID IS NULL OR FK_RUB = @RUB_ID)
    		AND
    		(@SURUB_ID IS NULL OR FK_SURUB = @SURUB_ID)
    	)
    Alors à ce sujet j'ai besoin d'une explication, un collègue a proposé une solution similaire, mais y a quelque chose qui m'échappe.

    (@RUB_ID IS NULL OR FK_RUB = @RUB_ID)

    Cette condition, fait en sorte de ne pas vérifier le champ 'FK_RUB' si le paramètre est null, elle ne vérifie pas si le FK_RUB est null si le param est null. Y a une faille dans mon raisonnement ?
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Je voudrais comprendre ton problème. Tu es bien dans le cas où tu as une table sur laquelle tu souhaites effectue une restriction ( cas categorie ) ou deux restriction ( cas de la sous categorie ).
    Dans ce càs là, la requête que je te propose et la requête que te propose elsuket sont équivalente. La mienne est un brin plus performante lol.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Tout à fait les deux requêtes sont équivalentes, sauf que sur ta requête j'avais pas remarqué qu'il me manquait un petit quelque chose que voici :

    Premier cas : @SURUB_ID IS NOT NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM       IMAGE, 
    WHERE     FK_RUB = @RUB_ID AND FK_SURUB = @SURUB_ID)
    Deuxième cas : @SURUB_ID IS NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM       IMAGE, 
    WHERE     FK_RUB = @RUB_ID AND FK_SURUB is NULL
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    En effet, la solution que je te proposais n'était pas la bonne... cela m'apprendra à répondre trop vite...

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 848
    Points : 52 966
    Points
    52 966
    Billets dans le blog
    6
    Par défaut
    Et si vous utilisiez COALESCE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM   IMAGE, 
    WHERE  FK_RUB = @RUB_ID 
      AND  FK_SURUB = COALESCE(@SURUB_ID, FK_SURUB)
    Lisez ce que j'ai écrit sur le NULL :
    http://sqlpro.developpez.com/cours/null/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Et si vous utilisiez COALESCE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM   IMAGE, 
    WHERE  FK_RUB = @RUB_ID 
      AND  FK_SURUB = COALESCE(@SURUB_ID, FK_SURUB)
    Lisez ce que j'ai écrit sur le NULL :
    http://sqlpro.developpez.com/cours/null/

    A +
    J'ai lu quelques parties de ton article et je ne voix pas comment ta requête répond à mon besoin, COALESCE renvoie le premier élément non null, n'est ce pas ? Moi je veux que ma requête marche même si le paramètre est null, me renvoyant les lignes où FK_SURUB est null ...

    Donc si @SURUB_ID est null la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      AND  FK_SURUB = COALESCE(@SURUB_ID, FK_SURUB)
    Devient, en quelques sortes pour les lignes où FK_SURUB est différent de null :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      AND  FK_SURUB = FK_SURUB
    Alors que moi dans le cas ou @SURUB_ID est null, je voudrais plutôt ce test :

    J'ai peut être loupé quelques choses, qu'est ce que t'en penses ?
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  13. #13
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT mesColonnes
    FROM monSchema.IMAGE,
    WHERE (
    		(FK_RUB IS NULL OR FK_RUB = @RUB_ID)
    		AND
    		(FK_SURUB IS NULL OR FK_SURUB = @SURUB_ID)
    	)
    Non ?

    @++

  14. #14
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    ... ce qui peut également s'écrire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT mesColonnes
    FROM monSchema.IMAGE,
    WHERE COALESCE(FK_RUB, @RUB_ID) = @RUB_ID
      AND COALESCE(FK_SURUB, @SURUB_ID) = @SURUB_ID
    Mais en terme de perf, je pense que la version OR IS NULL est préférable.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Bonjour,

    Merci pour vos réponses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT mesColonnes
    FROM monSchema.IMAGE,
    WHERE (
    		(FK_RUB IS NULL OR FK_RUB = @RUB_ID)
    		AND
    		(FK_SURUB IS NULL OR FK_SURUB = @SURUB_ID)
    	)
    Cette requête ne répond pas à mon problème me semble t il, puisque j'ai besoin de vérifier que @RUB_ID is null ET FK_RUB is null ...

    Moi je veux récupérer les lignes ayant FK_RUB null si le paramètre @RUB_ID est null
    Alors que cette ligne récup toutes les lignes ayant FK_RUB null ou FK_RUB égale à mon paramètre.
    (FK_RUB IS NULL OR FK_RUB = @RUB_ID)

    Non ?
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  16. #16
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par rad_hass Voir le message
    Moi je veux récupérer les lignes ayant FK_RUB null si le paramètre @RUB_ID est null
    ça se traduit donc par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FK_RUB = @RUB_ID OR FK_RUB IS NULL AND @RUB_ID IS NULL
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  17. #17
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 55
    Points
    55
    Par défaut Essaye cela
    Bonjour,

    Le null est très délicat à gérer. En général, ce que je fais, je prend une valeur qui ne peux exister sur le champ. Par exemple, si j'ai un compteur qui commance par 1 avec un pas de 1, peux prendre la valeur -1000 et faire le code comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT mesColonnes
    FROM monSchema.IMAGE,
    WHERE ISNULL( FK_RUB, -1000 )  =  ISNULL( @RUB_ID, -1000 )
        AND
              ISNULL( FK_SURUB, -1000 ) = ISNULL( @SURUB_ID, -1000 )
    J'espère que cette méthode est utilisable pour ton cas. Sinon, on pourra réfléchir à une autre solution.

  18. #18
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par YoussefTS Voir le message
    Bonjour,

    Le null est très délicat à gérer. En général, ce que je fais, je prend une valeur qui ne peux exister sur le champ. Par exemple, si j'ai un compteur qui commance par 1 avec un pas de 1, peux prendre la valeur -1000 et faire le code comme suit :
    Perso, je considère que ce genre de solution consiste à remplacer un NULL qui est effectivement délicat à gérer par une bidouille qui le sera encore plus...

    Citation Envoyé par YoussefTS Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT mesColonnes
    FROM monSchema.IMAGE,
    WHERE ISNULL( FK_RUB, -1000 )  =  ISNULL( @RUB_ID, -1000 )
        AND
              ISNULL( FK_SURUB, -1000 ) = ISNULL( @SURUB_ID, -1000 )
    J'espère que cette méthode est utilisable pour ton cas. Sinon, on pourra réfléchir à une autre solution.
    ça ne marchera pas, parce NULL n'est pas égal à NULL.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  19. #19
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 55
    Points
    55
    Par défaut La syntaxe ne compare pas les NULL
    La solution que je propose dépend du cas et du contexte de l'application de la base de données ainsi que les données à traiter. C'est pour cela que je me suis posé la question si la solution est applicable dans le cas de cette application. Pour cela, c'est Rad_Hass qui pourra nous le confirmer et j'attends sa réponse.

    Par ailleurs, pour NULL est différent de NULL, nous le savons tous. la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ISNULL( X, a ) = ISNULL( Y, a )
    remplace X par a s'il est null et fait la même chose pour Y. Cela dit si les deux sont à NULL, leur interprétation sera "a" ce qui rend les deux à égalité. Cela ne sort pas de la règle.

  20. #20
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par YoussefTS Voir le message

    Par ailleurs, pour NULL est différent de NULL, nous le savons tous. la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ISNULL( X, a ) = ISNULL( Y, a )
    remplace X par a s'il est null et fait la même chose pour Y. Cela dit si les deux sont à NULL, leur interprétation sera "a" ce qui rend les deux à égalité. Cela ne sort pas de la règle.
    Tu as entièrement raison, j'ai posté cette dernière remarque un peu trop vite, sur une interprétation erronée.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Mon Delete ne marche pas!Comment faire?
    Par ghan77 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/01/2006, 16h45
  2. [MySQL] Order by qui marche pas, Que faire ?
    Par mulbek dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 06/01/2006, 14h48
  3. [XML] Je ne sais pas comment faire...
    Par New dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2005, 10h47
  4. Impact de balles, trace de pas... Comment faire???
    Par supergrey dans le forum DirectX
    Réponses: 1
    Dernier message: 15/07/2004, 13h46
  5. IS NOT NULL ne marche pas !!!! ??????
    Par SkyDev dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/04/2004, 17h08

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