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 :

Create temporary table avec KEY


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    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
    Par défaut Create temporary table avec KEY
    Bonjour

    Je sens que je vais encore me faire taper sur les doigts comme un bambino dans le forum SQL Mais c'est pas grave .... apres tout un forum ca permet aussi de poser des questions quand on ne trouve pas de reponse non ?

    J'aimerais ajouter une clef lors de la creation d'une table temporaire a partir d'un query? Mais je me perds dans la syntaxe

    J'essaye ceci (pseudocode) mais je me fais jeter

    Est-ce possible ?
    Quelle serait la bonne syntaxe ?

    Merci de votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    drop table if exists tempo;
    create temporary table tempo
    SELECT 
    A,
    B,
    count(C),
    KEY k (B)
    FROM address 
    group by A;

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Par défaut
    CREATE TABLE AS

    Il me semble ! :p

  3. #3
    Membre expérimenté
    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
    Par défaut
    Non pas vraiment

    la syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create temporary table machin
    est tout a fait acceptée et marche tres bien

    C'est le KEY qui pose problème

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Par défaut
    Ah, désolé, je n'ai jamais fait de tables temporaires ! Peut-être après le GROUP BY ?

    Mais je parles dans le vide, ce ne sont que des suppositions !

    Bon courage !

  5. #5
    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
    D'après la doc MySQL, ce serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DROP TABLE IF EXISTS tempo;
    CREATE TEMPORARY TABLE tempo
    KEY k (B)
    SELECT 
    A,
    B,
    count(C),
    FROM address 
    GROUP BY A, B;
    A voir avec votre SGBD si la syntaxe est identique.
    J'ai ajouté B au GROUP BY sinon la valeur de B est la première valeur qu'il trouvera au changement de A. C'est plus conforme à la norme SQL comme ça.
    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 !

  6. #6
    Membre expérimenté
    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
    Par défaut
    Merci CinePhil

    J'ai essayé mais toujour le meme probleme

    Voici la syntaxe reelle (en MySql)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    drop table if exists tempo;
     CREATE TEMPORARY TABLE `tempo`
    key k (address.Plaats)
     SELECT
     sum(ritstat.gewicht) as gewicht,
     address.Plaats
     FROM ritstat
     Inner Join address ON ritstat.addrID = address.addrID
     group by Plaats;
    Si j'enleve le KEY ca va tres bien !

  7. #7
    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
    1ère idée :
    Remplacer Par :
    En effet, le résultat du SELECT va nommer la colonne Plaats et non pas address.Plaats.

    2ème idée :
    Le faire en deux fois...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DROP TABLE IF EXISTS tempo;
     CREATE TEMPORARY TABLE `tempo`
     SELECT
     sum(ritstat.gewicht) AS gewicht,
     address.Plaats
     FROM ritstat
     INNER JOIN address ON ritstat.addrID = address.addrID
     GROUP BY Plaats;
     
    ALTER TABLE tempo
    ADD KEY k (Plaats);
    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 !

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

Discussions similaires

  1. Pb avec CREATE TEMPORARY TABLE
    Par anémone dans le forum Débuter
    Réponses: 8
    Dernier message: 17/11/2010, 17h49
  2. create temporary table, memoire ou disque?
    Par ionesco dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/10/2009, 23h17
  3. create temporary table : unicité des sessions
    Par firejocker dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 22/12/2007, 11h20
  4. Query avec un CREATE TEMPORARY TABLE = erreur ?
    Par d3mone dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/05/2007, 19h11
  5. create temporary table
    Par ghostlord79 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/02/2004, 16h57

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