IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Plusieurs conditions sur une meme table (jointure)


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 17
    Points
    17
    Par défaut Plusieurs conditions sur une meme table (jointure)
    bonsoir,

    Ca fait 2 heures que je me creuse la tete pour ce probleme:

    Dans le but d'un moteur de recherche selon des criteres multiples, je souhaiterai recuperer les annonces qui ont 2 critères simultanées

    table annonce

    id - nom

    table critere

    annonce - contenu

    si je met qu'un critere ca marche: (sortir les annonces avec critere contenu=2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT annonce.* FROM annonce 
    INNER JOIN critere ON annonce.id=critere.annonce AND (critere.contenu='2')
    si je met 2 critere ca marche pas: (sortir les annonces avec critere contenu=2 et critere contenu=6 en simultané)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT annonce.* FROM annonce 
    INNER JOIN critere ON annonce.id=critere.annonce 
    AND (critere.contenu='2' and critere.contenu='6')
    Je suppose que ce dernier code est assez mal fait voir un peu débile puisque je demande 2 conditions differentes sur le meme champs mais c'est le seul moyen que j'ai trouvé pour combiner 2 critères

    si je me suis mal exprimé voila un exemple:

    table critere
    --------------------

    annonce | contenu
    ---------------------
    1 | 2
    2 | 4
    1 | 6

    je voudrait que ca me ressorte l'annonce N°1 ayant le critere contenu 2 et contenu 6 obligatoirement

    Es ce que quelqu'un peut m'aider pour reecrire ce dernier code (avec 2 criteres)

    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    ah j'ai trouvé en faisant comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT annonce.* FROM annonce 
    INNER JOIN critere as a ON annonce.id=a.annonce AND a.contenu='2' 
    INNER JOIN critere as b ON annonce.id=b.annonce AND b.contenu='6'
    double jointure avec alias


    Mon probleme est donc résolu, mais gros hic c'est incroyablement lent avec seulement 2 inner join sachant que mon moteur de recherche pourra avoir 3-4 critères, y a t'il moyen d'optimiser ça pour de la rapiditée ?

    sachant que la annonce.* est deja optimise dans mon code (annonce.id,annonce.nom, ...)

    Merci

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Points : 64
    Points
    64
    Par défaut
    Je dis peut-être une bétise mais pourquoi pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT annonce.* FROM annonce
    INNER JOIN ( SELECT cedonttuasbesoin FROM critere WHERE contenu = 2 AND contenu = 6 ) ON annonce.id=a.annonce
    Ca parait beaucoup plus léger ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Merci Zeflex, ça parait plus léger mais j'ai essayer de l'appliquer et il me sort

    Warning: mysql_num_rows(): supplied argument is not a valid MySQ ...

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Ton message d'erreur vient de php, pas de MySQL !
    Il signifie que l'argument que tu as mis entre parenthèses dans la fonction mysql_numrows n'est pas le résultat d'un mysql_query.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Points : 64
    Points
    64
    Par défaut
    Désolé j'ai fais une faute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT annonce.* FROM annonce
    INNER JOIN ( SELECT cedonttuasbesoin FROM critere WHERE contenu = 2 AND contenu = 6 ) AS a ON annonce.id=a.annonce
    J'ai oublié le AS A.

    Sinon quel est ton code actuel si cela ne fonctionnes toujours pas ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Merci le code marche bien et rapidement:

    Code original dans mon script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT DISTINCT annonce.* 
    FROM annonce 
    inner join (
      select * 
      from contenu_type_annonce 
      where contenu='2'
    ) as a on annonce.id = a.annonce
    Par contre ca ne resoud pas mon probleme lorsque je met un deuxieme argument:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DISTINCT annonce.* 
    FROM annonce 
    inner join (
      select * 
      from contenu_type_annonce 
      where contenu='2' 
        and contenu='6'
    ) as a on annonce.id = a.annonce
    Ca me ressort aucun enregistrement.

    Je vai essayer d'expliquer un peu mieux:

    Dans ma table contenu_type_annonce, il y a autant d'enregistrement que de critere (champs contenu) par annonce.

    Ex pour l'annonce id N°1 dans la table contenu_type_annonce:

    id |annonce | contenu
    -------------------
    1 | 1 | 2
    2 | 1 | 6
    3 | 2 | 6

    Je veut que mon script ressort un numéro id d'annonce si seulement il y a les 2 enregistrements (2 critères) dans la table contenu_type_annonce

    La dans cet exemple mon dernier script devrait ressortir l'annonce N°1 et pas l'annonce N°2 car la N°2 n'as pas les 2 critères (contenu 2 et contenu 6)

    Merci de m'avoir suivit et m'aider si possible :-))

  8. #8
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    une des meilleures solutions est pourtant celle que tu as donné en la modifiant très légèrement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT annonce.* FROM annonce 
    INNER JOIN critere AS a ON annonce.id=a.annonce 
    INNER JOIN critere AS b ON annonce.id=b.annonce
    where a.contenu='2' and b.contenu='6'
    après est ce que tes colonnes id et annonce sont indexés?
    quel est le type de ta colonne contenu? est ce toujours des chiffres?

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Avec cette sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * 
      FROM contenu_type_annonce 
      WHERE contenu='2' 
        AND contenu='6'
    Tu cherches une ligne qui a le contenu à la fois égal à 2 ET à 6, ce qui est impossible.
    Tu cherches en fait les annonces ayant un contenu de type 2 OU 6. Il faut donc utiliser OR et non pas AND.

    Et comme tu ne veux que les annonces qui ont au moins ces deux types, il faut vérifier que le comptage de contenu annonce pour chaque annonce répondant aux critères donne bien au moins 2.

    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT annonce.* 
    FROM annonce 
    INNER JOIN (
      SELECT annonce 
      FROM contenu_type_annonce 
      WHERE contenu = 2 
        OR contenu = 6
      GROUP BY annonce
      HAVING COUNT(*) > 1
    ) AS a ON annonce.id = a.annonce
    Au passage, si, comme je le pense, la colonne contenu est de type entier, inutile de mettre les valeurs recherchées entre guillemets.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Merci à vous 3, j'ai appliqué la derniere solution pour mon dernier probleme, et c'est good

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Bonsoir

    Petit probleme, j'ai voulu ajouter une condition si la valeur contenu est entre 2 dates, exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT annonce.* 
    FROM annonce 
    INNER JOIN (
      SELECT annonce 
      FROM contenu_type_annonce 
      WHERE contenu BETWEEN '1985-09-09' AND '1960-09-09'
        OR contenu = 6
      GROUP BY annonce
      HAVING COUNT(*) > 1
    ) AS a ON annonce.id = a.annonce
    Ca marche bien mais seulement a 95%! j'ai de temps en temps des annonces qui ressortent alors qu'elle n'est pas dans l'intervalle de date de la requête sql

    Es-ce que ma requete est bien construite ?

  12. #12
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Citation Envoyé par bugbug Voir le message
    Ca marche bien mais seulement a 95%! j'ai de temps en temps des annonces qui ressortent alors qu'elle n'est pas dans l'intervalle de date de la requête sql
    Je ne vois pas ce qui te choque, tu a mis un OR entre les deux conditions, donc si l'une est remplie la ligne est retournée.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Je veut bien les 2 conditions malgres le OR mais c'est une combine car c'est impossible avec le AND, le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GROUP BY annonce
      HAVING COUNT(*) > 1
    est la pour pallier ce probleme (voir le message + haut de CinePhil)

    Meme avec ce code sans le OR, ça me retourne 95 % de bon enregistrement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT annonce.* 
    FROM annonce 
    INNER JOIN (
      SELECT annonce 
      FROM contenu_type_annonce 
      WHERE contenu BETWEEN '1985-09-09' AND '1960-09-09'
      GROUP BY annonce
      HAVING COUNT(*) > 0
    ) AS a ON annonce.id = a.annonce
    Une idée ?

    Merci

  14. #14
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Ce que je ne comprends pas, c'est pourquoi contenu peut-être une date
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    contenu BETWEEN '1985-09-09' AND '1960-09-09'
    ou celaComment est déclarée cette colonne dans la structure de la table annonce ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    bonsoir

    Car ma table contenu_type_annonce champs contenu a été faite pour contenir n'importe quel type de contenu (mon site peut s'apparenter a un cms, il est adaptable a tout type de site, c'est une base commune pour les données des annonces)

  16. #16
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par bugbug Voir le message
    Car ma table contenu_type_annonce champs contenu a été faite pour contenir n'importe quel type de contenu (mon site peut s'apparenter a un cms, il est adaptable a tout type de site, c'est une base commune pour les données des annonces)
    Donc la colonne 'contenu' est de type VARCHAR je suppose ?
    Peut-être que MySQL procède à une conversion quand il teste le BETWEEN.
    Du coup, quand 'contenu' contient un nombre, il le convertit peut-être aussi et certains nombres convertis peuvent se retrouver dans la plage de dates du test.

    Par exemple, convertir un entier en date peut donner une date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST('19630724' AS DATE)
    Résultat :
    1963-07-24

    Au passage, si 'contenu' est de type VARCHAR, tu devrais mettre la valeur testée entre apostrophes.

    Maintenant, observons ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST ('1963-07-24' AS UNSIGNED)
    Résultat : 1963

    Donc CAST(LaDate AS UNSIGNED) <> LaDate.
    Alors que bien sûr CAST (L_Entier AS UNSIGNED) = L_Entier

    Tu devrais donc pouvoir tester le type réel du contenu pour appliquer le bon test.

    Essaie ce qui suit. Je ne suis pas sûr qu'on ait encore besoin du OR. Mais peut-être que ma syntaxe va planter lamentablement !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT annonce.* 
    FROM annonce 
    INNER JOIN (
      SELECT annonce 
      FROM contenu_type_annonce 
      WHERE 
        CASE 
          WHEN CAST(contenu AS DATE) = contenu THEN contenu BETWEEN '1985-09-09' AND '1960-09-09'
          ELSE contenu = 6
        END
      GROUP BY annonce
      HAVING COUNT(*) > 1
    ) AS a ON annonce.id = a.annonce
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Je me permet de rebondir sur le topic pour un problème très similaire, à la différence que je ne travaille que sur une seule table.
    Si il faut créer un topic pour mon cas, merci de me le signaler et je supprimerai ce message

    J'ai essayé d'appliquer la méthode de CineFil à cette problématique :

    Je possède une table dans laquelle j'enregistre un historique d'états pour des commandes :

    | id_order_history | id_order | id_order_state |

    J'aimerai sortir UNIQUEMENT les id_order qui possèdent des enregistrements où id_order_state est égal à 2 ET 8, mais cette requete me sort des résultats qui n'ont rien à voir avec ma condition 2 ET 8

    Je pense que mon problème est dans le AS. J'avoue que je n'ai pas bien compris la fin de cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT * 
    FROM order_history 
    INNER JOIN (
      SELECT id_order 
      FROM order_history 
      WHERE id_order_state = 2 
        OR id_order_state = 8
      GROUP BY id_order
      HAVING COUNT(*) > 1
    ) AS oh ON order_history.id_order = oh.id_order
    Merci pour votre aide

  18. #18
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Ton cas me semble plus simple
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT h.*
    FROM order_history h
    INNER JOIN (
        SELECT sh.id_order,
               COUNT(DISTINCT sh.id_order_state) eff
        FROM order_history sh
        WHERE sh.id_order_state IN (2,8)
        GROUP BY sh.id_order
        HAVING eff > 1
    ) h2
    ON h2.id_order=h.idorder
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    Saluton,
    Ton cas me semble plus simple
    Merci pour ta solution Maljuna.
    Cette requête marche parfaitement

Discussions similaires

  1. Double jointure sur une meme table
    Par ecarbill dans le forum Requêtes
    Réponses: 7
    Dernier message: 17/02/2011, 18h36
  2. 2 jointures sur une meme table
    Par amamildor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/10/2007, 17h24
  3. plusieurs COUNT sur une seule table avec conditions différentes
    Par dingoth dans le forum Administration
    Réponses: 9
    Dernier message: 20/12/2006, 10h13
  4. [MySQL] Plusieurs jointures sur une même table
    Par stephyyr dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2006, 14h24
  5. [debutant]Modelistation > plusieurs fk d'une meme table
    Par christophebmx dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/11/2004, 15h44

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