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

 MySQL Discussion :

Insérer le résultat d'un select dans une table


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Par défaut Insérer le résultat d'un select dans une table
    Bonjour à tous !
    N'arrivant pas à trouver de réponse après moultes recherches, je me tourne vers vous.

    Je souhaite extraire vers une table certaines lignes renvoyées par une requête en vue de réutiliser les résultats obtenus pas ce SELECT.

    De manière plus concrète :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select xl3_m, xl3_s,
    count(*) as occurrences
    from origine
    group by xl3_m, xl3_s
    order by occurrence
    desc
    ;
    me permet de compter les occurrences d'apparition des couples (xl3_s, xl3_m).

    J'aimerais ensuite effectuer une requête du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE TABLE  resultat_tri LIKE origine
    INSERT INTO  resultat_tri ?????
    où à la place du "???" je ne sélectionnerai que le couple présentant la plus forte occurrence, supprimant ensuite les autres. Lorsque je veux sélectionner le couple avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     INSERT INTO resultat_tri 
    select * from origine
    where occurrence=mac(occurrence)
    Avez-vous une idée de la manière dont je pourrai procéder pour remplir cette requête ?

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Essayez comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE resultat_tri
    SELECT *
    FROM origine AS o
    INNER JOIN (
      SELECT xl3_m, xl3_s,
        count(*) AS occurrences
      FROM origine
      GROUP BY xl3_m, xl3_s
      ORDER BY occurrence DESC
      LIMIT 1
    ) AS tmp
    ON o.xl3_m = tmp.xl3_m
      AND o.xl3_s = tmp.xl3_s
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Par défaut
    Merci de votre réponse !
    Malheureusement, voici le message d'erreur que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Error Code : 1054
    Unknown column 'occurrence' in 'order clause'

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Par défaut
    Au temps pour moi il s'agissait d'une faute de recopie (en l'occurrence un "s" qui s'est glissé à la fin de "occurrence")

    Cette petite difficulté surmontée (!), voici l'erreur qui m'est affichée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error Code : 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'origine' at line 1

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Par défaut
    Ca y est j'ai trouvé une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    create TABLE  resultat_tri(xl3_m bigint(20), xl3_s bigint(20), occurrence int(10));
     
    INSERT INTO  resultat_tri
    (SELECT xl3_m, xl3_s,
        count(*) AS occurrence
      FROM origine
      GROUP BY xl3_m, xl3_s
      ORDER BY occurrence DESC
      LIMIT 1);
    En fait, le message me disait que j'avais une erreur dans mon nombre de colonnes, puisque le résultat me donnait 3 colonnes et que dans ma table "resultat_tri" j'en avais 4, puisque copiée à partir de ma table "origine".

    [resolu]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/04/2008, 17h40
  2. résultat d'un select dans une variable
    Par chloro69 dans le forum Informix
    Réponses: 4
    Dernier message: 14/04/2008, 17h56
  3. Réponses: 11
    Dernier message: 18/07/2006, 13h53
  4. récupérer le résultat d'un SELECT dans une variable ?
    Par budhax dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/06/2006, 10h24
  5. [Sybase] résultat d'un select dans une variable
    Par stoz dans le forum Sybase
    Réponses: 2
    Dernier message: 14/09/2004, 14h28

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