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

Windows Forms Discussion :

[C#][.net2] Sous select et jointure ne passe pas


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut [C#][.net2] Sous select et jointure ne passe pas
    Salut à tous,

    Je dois faire un select un peu complexe dans mon application, le problème c'est que VB.NET n'a pas l'air content.

    J'utilise l'éditeur de tableAdaptater, j'essaye d'ajouter cette query :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ele_nom+' '+ele_prenom AS nom, (SELECT     e2.ele_id_by_classe                          FROM          eleves AS e2                          WHERE      e2.ele_pk = ans1_student1) AS choix_travail1, (SELECT     e3.ele_id_by_classe                             FROM          eleves AS e3                             WHERE      e3.ele_pk = ans1_student2) AS choix_travail2, (SELECT     e4.ele_id_by_classe                             FROM          eleves AS e4                             WHERE      e4.ele_pk = ans1_student3) AS choix_travail3, (SELECT     e5.ele_id_by_classe                             FROM          eleves AS e5                             WHERE      e5.ele_pk = ans1_student4) AS choix_travail4, (SELECT     e6.ele_id_by_classe                             FROM          eleves AS e6                             WHERE      e6.ele_pk = ans1_student5) AS choix_travail5, (SELECT     e7.ele_id_by_classe                             FROM          eleves AS e7                             WHERE      e7.ele_pk = ans2_student1) AS rejet_travail1, (SELECT     e8.ele_id_by_classe                             FROM          eleves AS e8                             WHERE      e8.ele_pk = ans2_student2) AS rejet_travail2, (SELECT     e9.ele_id_by_classe                             FROM          eleves AS e9                             WHERE      e9.ele_pk = ans2_student3) AS rejet_travail3, (SELECT     e10.ele_id_by_classe                             FROM          eleves AS e10                             WHERE      e10.ele_pk = ans2_student4) AS rejet_travail4, (SELECT     e11.ele_id_by_classe                             FROM          eleves AS e11                             WHERE      e11.ele_pk = ans2_student5) AS rejet_travail5
    FROM eleves, answer1, answer2
    WHERE eleves.ele_pk=ans1_student_fk And eleves.ele_pk=ans2_student_fk And eleves.ele_cla_fk=[?];
    Je ne sais pas ce qui ne lui plait pas, quand je la passe sous access (j'utilise une base access) il n'y a pas de problème.

    Il me dit que j'ai une erreur 'near select...' enfin, rien à voir quoi, quelqu'un à déjà eu ce problème, pcq c'est assez embêtant quand même
      0  0

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut


    T'as pas un moyen de simplifier ta requête :
      0  0

  3. #3
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Effectivement, j'ai bien peur que les facilités apportées par le Framework 2.0, entraine la conception d'applications de plus en plus lourdes en gestion de données alors que la bonne pratique veut que le maximum se passe côté BDD avec procedures stockées etc...
      0  0

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut
    Le problème c'est que je ne peux pas utiliser les procédures stockées avec access (ou alors j'ai pas compris).

    C'es fou quand même, y a pas un moyen de ramener un select un peu 'complexe'.
      0  0

  5. #5
    doccpu
    Invité(e)
    Par défaut
    ca depend de ta base de données ! certaines basens n'acceptent qu'un nombre limité de select imbriqués.

    sous acces les procedures stoquées s'apellent des modules ou tu peux utiliser aussi des vues et des macro selon ce que tu a a faire
      0  0

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut
    Oui, mais une fois définie dans Access, comment y accéder depuis dotnet ?

    J'utilise OleDB, et je ne sais pas comment y accéder.
      0  0

  7. #7
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    de toute maniere procedure stockee ou pas il te faut absolument revoir ta requete!!!!!

    donne nous le design de ta DB et quelles sont les donnes que tu veux en tirees???
      0  0

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut
    Je vais modifier ma requête pour utiliser OUTER JOIN :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select stud.stud_nom,stud1.stud_id,stud2.stud_id,stud3.stud_id,stud4.stud_id,stud5.stud_id
    from stud,answer1 as ans
    LEFT OUTER JOIN stud as stud1 ON ans.ans_stud1=stud1.stud_pk
    LEFT OUTER JOIN stud as stud2 ON ans.ans_stud2=stud2.stud_pk
    LEFT OUTER JOIN stud as stud3 ON ans.ans_stud3=stud3.stud_pk
    LEFT OUTER JOIN stud as stud4 ON ans.ans_stud4=stud4.stud_pk
    LEFT OUTER JOIN stud as stud5 ON ans.ans_stud5=stud5.stud_pk
    where ans_stud_fk = stud.stud_pk
    and ans_quest = 1
    Par contre ce que je comprend pas c'est qu'il n'est pas possible d'ajouter une requête qui, visiblement, tourne sous access, dans VB.NET ?

    Ma question est surtout là ...

    Sinon, c'est vrai que cette requête est un peu speciale, mais le modèle de données l'est aussi.

    en fait j'ai 1 table student qui est liée à une table answer, chaque entité de student répond à 5 questions en choisissant au maximum 5 entités student, les réponses sont stockées dans les tables aswer1,aswer2,aswer3,aswer4 (en fait il y a 4 questions ...)

    Donc, un étudiant choisi 5 étudiants x 4, et j'ai choisi de mettre ces '4 choix" plutôt que dans une seule et de les typer, mais ça ne change rien au problème
      0  0

  9. #9
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Par défaut
    Par contre ce que je comprend pas c'est qu'il n'est pas possible d'ajouter une requête qui, visiblement, tourne sous access, dans VB.NET ?

    Ma question est surtout là ...
    Je ne sais pas si c'est le cas ici, mais une piste possible est que lorsque ton appli utilise le moteur Jet via OleDb, il te faut utiliser directement une syntaxe Jet SQL, alors qu'avec Access tu passe par l'intermédiaire du parseur SQL d'Access.
    Or il y a quelques différences entre les deux (par exemple pour le caractère "wildcard", % ou * suivant les cas).
      0  0

  10. #10
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    ok en gros ton proble c'est une requete qui fonctionne sur acces mais qui ne fonctionne plus sur une autre db ou est-ce que cette meme requete fonctionne egalement sur la nouvelle db mais par contre ton appli ne fontcionne plus utilisant cette meme requete alros que cette meme appli fonctionnait au par avant .

    Si c'est le 1er cas verfie la syntaxe sql de ta nouvelle db (j'entend par nouvelle sqlserver par example a la place d'access)

    si c'est le 2eme cas verifie ton code verifie que tu utilse le bon provider et non plus jet 4 ... que tu utilise les bon adapter si bien que tu en utilise .

    en gros eclairci nous un peu plus et met du code pas ta requete si celle ci fonctionne mais la facon dont tu te connecte et que utilise cette meme requete dans ton code.
      0  0

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut
    Non, ici je constate, évidement la syntaxe est adaptée suivant que je suis sous Access ou VS.

    Ce que je ne pige pas (et c'est le titre de mon post) c'est pourquoi les sous select ne passent pas.

    C'est sur qu'en modifiant la syntaxe (passer mes jointures en dehors du select) ça passe, mais le problème n'est pas là.

    Essayez de faire un simple sous select avec une jointure et ça ne passe pas, je veux bien qu'il y aie des différences, mais la c'est le béhaba du SQL (baba ? )
      0  0

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut
    Pour info, je n'ai plus de problème après modification de ma requête, ne vous cassez donc pas la tête
      0  0

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut
    En fait je dois vraiment faire un sous select, comment faire un simple sous select dans VS ??

    En fait le problème se pose dans le query builder, il me trouve des erreurs, en bas à gauche il y a un bouton dans ce même query builer : 'execute query', quand je clic ça fonctionne ! Il execute ma query correctement, c'est dingue quand même :s
      0  0

  14. #14
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Faudrait que tu nous montres le code que VS t'a généré
      0  0

  15. #15
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    Citation Envoyé par VincenzoR
    il y a un bouton dans ce même query builer : 'execute query', quand je clic ça fonctionne ! Il execute ma query correctement, c'est dingue quand même :s
    il y a une difference entre compiler ta query et l'executer et recuperer le resultat , tu peux tres bien passer le stade de verification d'une query et pourtant avoir des erreurs au moment de l'execution.

    je te conseil d'essayer t'as query avec Query Analyser et de verifier que tu obtiens bien un resultat.

    Ps : sinon effectivement du code serait le bienvenue :

    1) ta stored procedure ou ta requete si elle est inscris dans le code ;
    2)ta connection , l'execution et la recuperation des donnees de cette meme requete.
      0  0

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut
    Bon après quelques tests, le problème vient uniquement des limitations du query builder de VS.

    Il n'est pas fait pour comprendre des query un peu complexes (sous seelect est trop complexe pour lui).

    Par contre, si les sous select sont nommé ((query) as truc) alors il génère correctement le tableAdaptater avec les colonnes.

    Il suffit ensuite de lui spécifier manuellement les arguments à la requête et ça passe.

    Voilà voilà
      0  0

  17. #17
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    tres bien!!!! j'ai pour habitude de faire mes requete avec 'as' mais c'est toujours bon a savoir , super que tu l'as resolu j'ai comme un sentiment qu'un jour je t'en serait tres reconnaissant par ce que le genre de truc a te rendre fou.
      0  0

  18. #18
    doccpu
    Invité(e)
    Par défaut
    moi la question que je me pose c'est que veux tu faire exactement ?
    d'appres ta querry tu compulse une tonne de requettes en 1 seulle ce qui de la facon dont tu l'a fait est impossible.
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    SELECT ele_nom+' '+ele_prenom AS nom, 
    (
    	SELECT e2.ele_id_by_classe 
    	FROM eleves AS e2 
    	WHERE e2.ele_pk = ans1_student1
    ) 
    AS choix_travail1, 
    (
    	SELECT e3.ele_id_by_classe 
    	FROM eleves AS e3 
    	WHERE e3.ele_pk = ans1_student2
    ) 
    AS choix_travail2, 
    (
    	SELECT e4.ele_id_by_classe 
    	FROM eleves AS e4
    	WHERE e4.ele_pk = ans1_student3
    )
    AS choix_travail3, 
    (
    	SELECT e5.ele_id_by_classe
    	FROM eleves AS e5
    	WHERE e5.ele_pk = ans1_student4
    )
    AS choix_travail4,
    (
    	SELECT e6.ele_id_by_classe
    	FROM eleves AS e6
    	WHERE e6.ele_pk = ans1_student5
    )
    AS choix_travail5,
    (
    	SELECT e7.ele_id_by_classe
    	FROM eleves AS e7
            WHERE e7.ele_pk = ans2_student1
    )
    AS rejet_travail1,
    (
    	SELECT e8.ele_id_by_classe
    	FROM eleves AS e8
            WHERE e8.ele_pk = ans2_student2
    )
    AS rejet_travail2, 
    (
    	SELECT e9.ele_id_by_classe 
    	FROM eleves AS e9
    	WHERE e9.ele_pk = ans2_student3
    )
    AS rejet_travail3, 
    (
    	SELECT e10.ele_id_by_classe
    	FROM eleves AS e10
    	WHERE e10.ele_pk = ans2_student4
    )
    AS rejet_travail4,
    (
    	SELECT e11.ele_id_by_classe
    	FROM eleves AS e11
    	WHERE e11.ele_pk = ans2_student5
    )
    AS rejet_travail5 
    FROM eleves, answer1, answer2 
    WHERE 
    	eleves.ele_pk=ans1_student_fk
    And
    	eleves.ele_pk=ans2_student_fk
    And
    	eleves.ele_cla_fk=[?];
    Sutout cette partie me parait foireuse ! meme si je n'aprecie pas les diferents SELECTs avec les AS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    FROM eleves, answer1, answer2 
    WHERE 
    	eleves.ele_pk=ans1_student_fk
    And
    	eleves.ele_pk=ans2_student_fk
    And
    	eleves.ele_cla_fk=[?];
    d'appres ce que je lit tu essaie de recuperer des données de plusieurs tables en meme temp dans le from mais tu ne les lie pas dans le where ou du moins tu le fait mal ! (ce ne sont ni les céfs ni les index qu'il faut lier mais les champs !) alors je serais toi j'indenterais mon code (comme je l'ai fait plus haut) et je reviserais mes cours de SQL. parce que la c'est un cataclysme conceptuel au niveau de l'elaboration de la requette ! Un conseil recommence tout ! Et relit bien tes cours de SQL sur les jointures de tables ! (une requete qui lie des tables sans au moins un JOIN quelquepar a toutes les chances de foirer ! )

    ps: VS reconnait tres bien les select imbriqué a condition qu'ils ne renvoient qu'une seule ligne !
      0  0

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 77
    Par défaut
    Alors ...

    Mon select passe très bien

    Pour ton info donc, voici les tables (légérement évoluées depuis)

    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
    eleves
    ---------
    ele_pk (PK)
    ele_cla_fk (FK vers classe)
    ele_nom
    ele_prenom
    ele_id_by_classe
     
    answers
    ---------
    ans_pk (PK)
    ans_ele_fk (FK vers eleves)
    ans_student1
    ans_student2
    ans_student3
    ans_student4
    ans_student5
    ans_question
    Chaque entité eleves choisi 5 entités eleves pour 4 questions (ans_question).

    Quest 1 : ils choisi 5 étudiants max pour une chose
    Quest 2 : ils rejete 5 étudiants max pour une chose
    Quest 3 : ils choisi 5 étudiants max pour une autre chose
    Quest 4 : ils rejete 5 étudiants max pour une autre chose

    Chaque record de answers sera donc les 5 étudiants choisi(rejeté) par un étudiant pour une question donnée.

    Ma requête cherche à récupérer pour une classe données tous les id des étudiants choisi et rejeté (ici j'avais séparé les 4 questions).

    Si tu préfere voici la requête avec les sous select passé dans le where en outer join :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT     eleves.ele_id_by_classe AS id, eleves.ele_nom + ' ' + eleves.ele_prenom AS nom, stud1.ele_id_by_classe AS stud1, 
                          stud2.ele_id_by_classe AS stud2, stud3.ele_id_by_classe AS stud3, stud4.ele_id_by_classe AS stud4, stud5.ele_id_by_classe AS stud5
    FROM         (eleves INNER JOIN
                          (((((answers ans LEFT OUTER JOIN
                          eleves stud1 ON ans.ans_student1 = stud1.ele_pk) LEFT OUTER JOIN
                          eleves stud2 ON ans.ans_student2 = stud2.ele_pk) LEFT OUTER JOIN
                          eleves stud3 ON ans.ans_student3 = stud3.ele_pk) LEFT OUTER JOIN
                          eleves stud4 ON ans.ans_student4 = stud4.ele_pk) LEFT OUTER JOIN
                          eleves stud5 ON ans.ans_student5 = stud5.ele_pk) ON eleves.ele_pk = ans.ans_student_fk)
    WHERE     (ans.ans_question = ?)
    Par contre (et si tu es intéressé par le problème des sous select par VS) voici une requête qui ne passe dans le query builder. Elle permet de selectionner pour une classe donnée le nombre de fois que chaque étudiant a été choisi par les autres (quest 1 et 3) ainsi que le total :
    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
     
    SELECT     ele_id_by_classe AS ele_id, (eleves.ele_nom + ' ' + eleves.ele_prenom) AS nom,
                              (SELECT     COUNT(*)
                                FROM          answers AS a2
                                WHERE      (a2.ans_student1 = eleves.ele_pk OR
                                                       a2.ans_student2 = eleves.ele_pk OR
                                                       a2.ans_student3 = eleves.ele_pk OR
                                                       a2.ans_student4 = eleves.ele_pk OR
                                                       a2.ans_student5 = eleves.ele_pk) AND a2.ans_question = 1) AS choix_travail,
                              (SELECT     COUNT(*)
                                FROM          answers AS a2
                                WHERE      (a2.ans_student1 = eleves.ele_pk OR
                                                       a2.ans_student2 = eleves.ele_pk OR
                                                       a2.ans_student3 = eleves.ele_pk OR
                                                       a2.ans_student4 = eleves.ele_pk OR
                                                       a2.ans_student5 = eleves.ele_pk) AND a2.ans_question = 3) AS choix_jeu, (choix_travail + choix_jeu) AS total_choix
    FROM         eleves, answers, classe
    WHERE     answers.ans_student_fk = eleves.ele_pk AND classe.cla_pk = eleves.ele_cla_fk AND ele_cla_fk = ? AND (answers.ans_question = 1)
    Celui-ci pose problème donc (il n'est pas compris) et arrête moi si je me trompe ... mais count(*) ça ne renvoit pas plus d'1 row non ???
      0  0

  20. #20
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Bonjour Vincenzor
    Je me permet d'intervenir, afin d'eclairage
    Ne serait-il pas judicieux que tu cherches en premier lieu à optimiser au mieux la requête Sql. Si oui, je te propose de poster un message dans le Forum dedié SQL où des pros de "haut-vol" te permettront de le faire. Il me semble que dans l'idée tu dois créer des tables temporaires, ce qui se fait dans le FROM si je me souviens bien.
      0  0

Discussion fermée
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/09/2011, 12h31
  2. [HQL] jointure implicite dans un sous-select
    Par Manopower dans le forum Hibernate
    Réponses: 1
    Dernier message: 09/09/2009, 11h45
  3. Problème performance SELECT avec jointure
    Par Netgamer dans le forum Requêtes
    Réponses: 7
    Dernier message: 05/08/2005, 10h20
  4. [firebird] sous select dans un select
    Par gdido dans le forum SQL
    Réponses: 2
    Dernier message: 14/05/2004, 09h57
  5. sous-select
    Par necronick dans le forum Requêtes
    Réponses: 8
    Dernier message: 10/05/2004, 16h13

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