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 :

Creation de tables temporaires


Sujet :

MS SQL Server

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Creation de tables temporaires
    Bonjour

    Une nouvelle fois je suis confronté aux différences sybntaxiques entre MySql et MSSQL

    J'essaye de faire un select qui doit me creer une table temporaire

    En MySql je fais cela ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    drop table if exists t1;
    create temporary table t1  
    Select
    PersID,
    count(PersID) as cnt
    FROM Personnes_tbl 
    INNER JOIN Link_Contacts_tbl ON PersID = CtacPersID 
    group by PersID;
    Ca fait une heure que je me bat avec les Ms SQL et google pour trouver comment faire en MS SQL mais sans succes

    N.B. Accessoiremrent, je souhaite creer une table temporaire afin de Generer un count que je vais utiliser dans une jointure afin d'eviter un Group By téléscopique dans mon query principal !!

    Que ceux qui n'ont jamais essayés MySql jettent un oeil il y a beaucoup de choses qui sont vachement plus faciles qu'avec MS Sql que je découvre
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Que ceux qui n'ont jamais essayés MySql jettent un oeil il y a beaucoup de choses qui sont vachement plus faciles qu'avec MS Sql que je découvre
    Comme vous le dites il faut jeter un oeil.... et prendre le temps de lire la documentation que ce soit pour SQL Server ou MySql ......

    Avec SQL Server les tables temporaires sont précédés de # (table temporaire locale) ou de ## (table temporaire globale)
    Ensuite vous pouvez déclarer votre table temporaire soit avec une instruction DDL (CREATE TABLE #TEMP) soit à la volée

    Exemple

    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
     
    CREATE TABLE #TEMPORY_TABLE_1
    (
     PersID,
     countPersID INT
    );
    GO
     
    INSERT INTO #TEMPORY_TABLE_1
    SELECT
    PersID,
    count(PersID) 
    FROM Personnes_tbl 
    INNER JOIN Link_Contacts_tbl ON PersID = CtacPersID 
    GROUP BY PersID;
     
    SELECT * FROM #TEMPORY_TABLE_1;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT
    PersID,
    count(PersID) AS cnt
    INTO #TEMPORY_TABLE_1
    FROM Personnes_tbl 
    INNER JOIN Link_Contacts_tbl ON PersID = CtacPersID 
    GROUP BY PersID;
     
    SELECT * FROM #TEMPORY_TABLE_1;
    Selon la version de SQL Server s'ajoutent d'autres possibilités comme les CTE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    WITH CTE
    AS
    (
     SELECT
     PersID,
     count(PersID) 
     FROM Personnes_tbl 
     INNER JOIN Link_Contacts_tbl ON PersID = CtacPersID 
     GROUP BY PersID;
    )
    SELECT * FROM CTE;
    ou enfin les variables de table

    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
    DECLARE @t TABLE
    (
     PersID,
     countPersID INT
    );
     
    INSERT INTO @t
    SELECT
     PersID,
     count(PersID) 
    FROM Personnes_tbl 
    INNER JOIN Link_Contacts_tbl ON PersID = CtacPersID 
    GROUP BY PersID;
     
    SELECT * FROM @t;
    Comme vous le voyez , vous avez un large panel de solutions pouvant répondre à vos besoins avec SQL Server.

    ++

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Merci
    Merci beaucoup pour ces explication et soit certain que je cours partout pour trouver l'information utile

    Voici ma derniere tentative sans succes

    L'idee c'est de creer une table temporaire (en l'effacant au préalable si elle existe deja)
    Dans cette table je stocke un count que je vais utiliser dans un autre select
    Le passage par la table temporaire me permet de ne pas construire un group by demesuré obligatoire en MS Sql et tout a fait inutile en MySQL

    Quand j'execute la commande ci-apres il me dit que #t1 existe déja ?

    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
    IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '#t1') DROP TABLE #t1;
    SELECT 
    PersID,
    count(PersID) as cnt
    into #t1
    FROM Personnes_tbl 
    INNER JOIN Link_Contacts_tbl ON PersID = CtacPersID 
    group by PersID;
    SELECT 
    #t1.PersID AS PersID,
    #t1.cnt,
    PersNom AS Nom,
    PersPrenom AS Prenom,
    PersSexID AS Sex,
    PaysNomFR AS Nationalite,
    PersGSM AS Mobile,
    PersTel AS Tel,
    PersEmail AS Email
    FROM #t1,Personnes_tbl
    LEFT OUTER JOIN Pays_tbl ON PersNationID = PaysID 
    where #t1.PersID=Personnes_tbl.PersID;
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  4. #4
    Membre averti

    Profil pro
    En reconversion
    Inscrit en
    Novembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Novembre 2007
    Messages : 180
    Points : 351
    Points
    351
    Par défaut
    Bonjour,
    Sous Sql Server, à partir de la version 2005, vous avez les CTE (http://msdn.microsoft.com/fr-fr/library/ms190766.aspx) qui peuvent notamment servir de table temporaire. Moi qui fait l'inverse et me dirige maintenant vers MySql je suis bien triste de ne pas voir cette même fonctionnalité.

    Cela fonctionne globalement de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    WITH TableTemporaire AS ( SELECT PersID, count(PersID) AS cnt
    FROM Personnes_tbl 
    INNER JOIN Link_Contacts_tbl ON PersID = CtacPersID 
    GROUP BY PersID )
     
    SELECT .... , ... , T2.cnt , ...
    FROM ... T1
    INNER JOIN TableTemporaire T2 ON T2.PersID = T1.PersID
    Vous pouvez utiliser les CTE dans des vues.
    En espérant vous avoir aidé.

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Tu a a peu pres la meme chose en MySql
     
    drop table if exists tempo1;
    Create temporary table tempo1
    Select
    ...
    From
    etc ...;
    Select * from tempo1;
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Membre averti

    Profil pro
    En reconversion
    Inscrit en
    Novembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Novembre 2007
    Messages : 180
    Points : 351
    Points
    351
    Par défaut
    Pas vraiment d'accord, on peut aussi créer des tables temporaires avec # sous Ms Sql, les CTE sont bien plus que cela car elles permettent également de mettre en place la récursivité. Je ne t'en dirais pas plus car je ne suis pas expert là dessus mais en gros cela revient à utiliser le résultat d'une requête sur elle même en boucle.
    En bref je crois que quand on change comme cela de base de données on a toujours des à priori au début car on doit s'adapter mais chaque outil a ses qualités et ses défauts.

    Bon courage

  7. #7
    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,

    L'absurdité de l'utilisation des tables temporaires provient :
    - du fait que l'on duplique les données que l'on a déjà en base
    - du fait que l'on croit que les tables temporaires sont stockées en mémoire et ne sont pas persistées sur le disque, comme vous le verrez ici

    En ce sens je rejoins le conseil de Patic, qui est d'utiliser les expressions de table commune : c'est une vue qui n'a d'existence que pour la durée de la requête.
    Donc on ne duplique pas les données, on bénéficie d'un plan optimisé, et on optimise l'utilisation du cache de données.

    Pour voir comment en plus introduire la recursivité à travers ces expressions de table commune, c'est par ici.
    Pour des exemples supplémentaires, c'est par ici

    @++

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Notre ami olibara compare une version de MySQL (j'imagine relativement récente) avec un SQL Server qui en a plus de dix.

    Au lieu de toujours dire : "je sais faire ça en MySQL en SQL Server on ne peut pas", prenez le temps, à minima, d'être objectif.

  9. #9
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Pour Elsuket

    Je n'ai pas encore beaucoup d'expèrience en MS SQL mais je peux t'assurer que certaines requetes complexes en MYsql sont beaucoup plus rapide en forcant le passage par des tables intermediaire qu'en laissant l'engine faire son plan tout seul pour organiser ses multiples jointure
    Tu va me dire que c'est une question d'intelligence d'engine ...
    Certe !
    En MySQL free je sais a quoi m'attendre
    En SQL Serrver je découvre encore ....
    En ce sens Waldar a raison ! : avancons en restant objectif ...
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  10. #10
    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
    Je ne remets pas en cause la qualité du moteur de MySQL, c'est un SGBD que je ne connais pas.
    Prendre un quart d'heure de plus pour écrire une requête tout à fait ensembliste reste le meilleur moyen d'obtenir des performances correctes.

    @++

  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 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Je n'ai pas encore beaucoup d'expèrience en MS SQL mais je peux t'assurer que certaines requetes complexes en MYsql sont beaucoup plus rapide en forcant le passage par des tables intermediaire qu'en laissant l'engine faire son plan tout seul pour organiser ses multiples jointure
    Tu va me dire que c'est une question d'intelligence d'engine ..
    .
    Le passage par des table temporaires oblige à gérer une transaction qui est obligatoirement journalisée donc des opérations physiques de disques et des IO multipliées.
    Certes il se peut qu'intrinsèquement le temps écoulé entre le lancement de la requête et l'apparition des résultats soit plus rapide avec des tables temporaires, mais les performances ne se mesurent pas à la durée intrinsèque, mais à la consommation de ressources comme les IO ou le CPU. Et là vous verrez franchement la différence...
    Avez vous fait des tests avec un volume suffisant de données pour affirmer de telles inepties ?
    Un volume suffisant signifie au moins des données en quantité supérieure à la RAM du serveur, d'au moins 2 à 3 fois...

    Enfin la qualité du moteur relationnel de MySQL étant tellement lamentable (voir les nombreux post dans le forum MySQL pour constater ses plans merdiques pour des requêtes même relativement simple) qu'il ne serait même pas étonnant que pour aller plus vite il faille hélas passer par des tables temporaires !!!

    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 émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Je parles de performance mesurées sur des jointures entre des tables faisant +/- 500 MB et 13.000.000 d'enregistrement
    La machine ayant 2 GB de mémoire

    Et j'ai fais sufisament de query de ce genre et de test de performance pour savoir de quoi je parle

    Et la performance a ce niveau pour moi c'est de savoir si je vais avoir un résultat en 15 minutes ou en 3h !! peu importe ce que doivent faire les disques ou le processeur !

    En tout cas il y a matiere a débat ne fut-ce que de verifier la pertinence de ces query sur différentes versions de MySql ou MS Sql mais franchement devoir débattre avec toi me fatigue a l'avance !!
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  13. #13
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Je parles de performance mesurées sur des jointures entre des tables faisant +/- 500 MB et 13.000.000 d'enregistrement. La machine ayant 2 GB de mémoire
    Ce n'est donc pas du tout un volume significatif des données que vous avez utilisé. Vous ne pourrez réellement éprouver les performance de vos requêtes que lorsque les données en jeu dans la requête dépasserons de manière significative le volume de la RAM.

    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/ * * * * *

  14. #14
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Peut etre !

    Mais en l'occurence, je fais une jointure entre 5 tables de ce genre

    Et concretement, si dans un contexe éprouvé et connu je dispose d'une methode qui me donnera un resultat en 15 minutes et d'une autre methode qui me donnera un resultat en trois heure, Je vais preferer la premiere methode tant qu'une comete ne viens pas exploser mon contexte !

    Ou que la methode academique ne me donne pas de meilleurs résultats !

    Meme si des academiciens voudraient me convaincre que mon espace temps de reference n'est pas le bon !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  15. #15
    Membre à l'essai
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Au lieu d'utiliser une table temporaire, pourquoi ne pas utiliser tout simplement une table dérivée dans la requête ?

    Cela ressemblerait à ceci :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT t1.PersID, t1.cnt,
        PersNom AS Nom, PersPrenom AS Prenom,
        PersSexID AS Sex, PaysNomFR AS Nationalite,
        PersGSM AS Mobile, PersTel AS Tel,
        PersEmail AS Email
    FROM Personnes_tbl
        INNER JOIN (
            SELECT PersID,count(PersID) AS cnt
            FROM Personnes_tbl 
                    INNER JOIN Link_Contacts_tbl 
                        ON PersID = CtacPersID 
            GROUP BY PersID
        ) AS t1
            USING(PersID)
        LEFT OUTER JOIN Pays_tbl 
            ON PersNationID = PaysID
    Et c'est compatible avec n'importe quel SGBDR je suppose.....

  16. #16
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci Sw3eT

    Tu as tout a fait raison, cela serait sans doute préférable
    C'est la facilité syntaxique de la table temporaire et l'amélioration notable de la rapidité d'execution qui m'ont fait pencher vers la table temporaire sans aller plus loin dans l'investiguation.
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  17. #17
    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
    Notons tout de même que lorsqu'on crée une table temporaire, on engendre la redondance de données.

    De surcroît dans SQL Server, lors de l'utilisation de #tables, on engendre la maintenance de statistiques dans la base de données TempDB, qui et utilisée pour bien d'autres choses par le moteur de bases de données.
    Y recourir sous SQL Server est donc contre-performant

    @++

Discussions similaires

  1. Problème creation de table temporaire
    Par Smata dans le forum JDBC
    Réponses: 0
    Dernier message: 17/05/2015, 13h31
  2. [2008R2] Creation de Table temporaire
    Par xian21 dans le forum Développement
    Réponses: 5
    Dernier message: 25/10/2013, 10h06
  3. Creation table dans une procedure stockee - table temporaire
    Par dehorter olivier dans le forum SQL
    Réponses: 3
    Dernier message: 27/05/2007, 11h14
  4. [ASE]création de table temporaire
    Par Oraman dans le forum Sybase
    Réponses: 3
    Dernier message: 16/08/2006, 14h55
  5. [ASE 12.5.3][TSQL] - Creation d'une table temporaire en dynamique
    Par CVince dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 16/06/2006, 15h30

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