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

Langage SQL Discussion :

Enregistrer une requête SQL dans une table


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Enregistrer une requête SQL dans une table
    Bonjours à tous je voudrais savoir si il est possible de faire une requête mais au lieu qu'elle nous fasse une sélection et affiche le résultat je voudrais que le résultat soit enregistré dans un autre table pour pouvoir la réutiliser par la suite je m'explique :

    J'ai une colonne APET700 avec dans cette colonne des champs qui contiennent 5 chiffres et je voudrais ne récupérer que les 2 premiers chiffres avec cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT LEFT(APET700,2)
    FROM nomtable
    mais ce résultat je voudrais pouvoir la sauvegarder dans une autre table

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,


    Pourquoi vouloir stocker ce résultat ?

    les données de votre table initiale évolue au file du temps ?

  3. #3
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Il suffit de faire un INSERT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO MaTable1 (MesColonnes)
    SELECT MesColonnes
    FROM MaTable2

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    En gros je voudrais faire une table avec 3 colonnes une colonne avec le résultat de ma requête, une autre avec le type d'entreprise, et la derrière avec le nombre d'entreprise de ce type

    PS: le type d’entreprise sous entend son type de production (industries alimentaire, commerce de gros, commerce de détail ...)

    PS 2: les 2 premiers chiffres que je veux récupérer avec ma requête sert a déterminer à quelle type d'entreprise correspond une entreprise donnée

    (ex: entreprise DUPOND si les 2 premiers chiffres trouvés par ma requête est 46 cette entreprise fait du commerce de gros)

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    je me joins à Punkoff; cela est faisable avec une seule requête en utilisant la condition LEFT(APET700,2)dans la jointure.


    NB si la colonne est une colonne numérique ce serait mieux d'utiliser des fonctions numériques. Si les nombres sontstockés en alpha,

  6. #6
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Et pourquoi pas une vue de données ?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    merci pour vos réponses rapides et merci a lola qui m'a permis de résoudre mon problème.

    en créant une table de "transition" j'ai pu arriver à ce que je voulais.

    dans un premier temps je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO transition(num)
    SELECT LEFT(APENT700,2)
    FROM table1;
    et après je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO table2(num)
    SELECT num
    FROM transition
    GROUP BY num;
    cela évite les doublons

  8. #8
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Pourquoi tu ne fais pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table2(num)
    SELECT distinct LEFT(APENT700,2)
    FROM table1;
    Pour éviter les doublons ce n'est pas le GROUP BY qu'il faut utiliser mais le distinct.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    le problème c'est que en faisant cela ça ne me les classe pas par ordre croisant

  10. #10
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Citation Envoyé par brumos Voir le message
    le problème c'est que en fessant cela sa me les classe pas pour ordre croisant
    Ça ne sert à rien de vouloir les mettre en ordre croissant dans la base, il n'y a pas de notion d'ordre dans une table. C'est avec le SELECT par la suite que tu fait ton tri.

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    ce n'est vraiment pas optimal

    attention à vider la table "transition" a chaque fois, sinon la table se charge de doublons

  12. #12
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    sa me les classe pas pour ordre croisant
    Tu as de "légères" lacunes en SGBD...
    Pour ordonner des données il faut utiliser ORDER BY, ce n'est pas l'ordre d'insertion qui régit l'ordre d'affichage

    De plus utiliser une table tempo pour remplir une table tierce qui sera déphasée au niveau des données à la moindre mise à jour/insertion/suppression de données sur la table source ne me semble pas la solution appropriée à ta problématique

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ça ne sert à rien de vouloir les mettre en ordre croissant dans la base, il n'y a pas de notion d'ordre dans une table. C'est avec le SELECT par la suite que tu fait ton tri.
    autre petite subtilité c'est que les données de ma table1 vont être renouvelées tous les 6 mois et donc en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table2(num)
    SELECT DISTINCT LEFT(APENT700,2)
    FROM table1;
    les données risquent de ne pas se retrouver au même endroit et donc être en décalage par rapport aux champs des autres colonnes d’à côté

    exemple: le 10 signifie commerce de gros bien et bien en changeant les données de ma table1 une fois tous les 6 mois un moment le 10 peut très bien correspondre à service de télécommunication

  14. #14
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Expliquez clairement les tenant et aboutissements de cette démarche.

    J'ai toujours pas compris l'utilité de faire l'insert et plus vous distillez des infos moins je comprend.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2011, 10h07
  2. erreur dans une requête sql dans une fonction php
    Par frboyer dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2009, 13h37
  3. Stocker une requête SQL dans une table
    Par dmk04 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 05/02/2007, 15h24

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