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 Table As (select Union Select )


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 31
    Points
    31
    Par défaut Create Table As (select Union Select )
    Bonjour,

    Je souhaiterais créer une table regroupant plusieurs autres tables. Ces tables ont bien sûr toutes les mêmes noms de colonnes.

    J'ai essayé la requête suivante mais apparemment mysql n'accepte pas que j'utilise des UNION dans mon CREATE TABLE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE EMI_GLOBAL AS (
    SELECT * FROM EMI_SNAP_02_01_10 
    UNION 
    SELECT * FROM EMI_SNAP_02_01_20 
    UNION 
    SELECT * FROM EMI_SNAP_02_01_30);
    Auriez-vous une autre idée pour effectuer cette opération.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 763
    Points
    30 763
    Par défaut
    Le faire en plusieurs étapes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE EMI_GLOBAL AS (
    SELECT * FROM EMI_SNAP_02_01_10 );
    INSERT INTO EMI_GLOBAL
    SELECT * FROM EMI_SNAP_02_01_20 ;
    INSERT INTO EMI_GLOBAL
    SELECT * FROM EMI_SNAP_02_01_30 ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    N'y aurait-il pas une autre solution ?

    Merci quand même.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par cactus2078
    apparemment mysql n'accepte pas que j'utilise des UNION dans mon CREATE TABLE
    1/ c'est-à-dire ? Avez-vous un message d'erreur ? Si oui, donnez-le nous
    2/ votre version de MySQL (quelle est-elle ?) supporte t'elle le mot clé UNION dans des requêtes autres que celles utilisant UNION ?
    3/ avez-vous essayé de remplacer vos SELECT * par l'énumération des colonnes sachant qu'à cause du mot clé UNION vous devez avoir le même nombre de colonnes et elles doivent être une à une du même type ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Voici ma version de MySQL :

    mysql Ver 14.12 Distrib 5.0.32, for pc-linux-gnu (x86_64) using readline 5.2

    Le message d'erreur que j'obtiens après exécuté cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE EMI_GLOBAL AS (
    SELECT * FROM EMI_SNAP_02_01_10 
    UNION 
    SELECT * FROM EMI_SNAP_02_01_20 
    UNION 
    SELECT * FROM EMI_SNAP_02_01_30);
    est celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #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 'UNION
    SELECT * FROM EMI_SNAP_02_01_20
    UNION
    SELECT * FROM EMI_SNAP_02_01_3' at line 3
    Le mot clé UNION fonctionne dans les requêtes SELECT.

    Mes tables ont les mêmes noms de colonne et ces colonnes sont également du même type.

    J'ai essayé la solution que m'a donné all_24 et elle fonctionne donc ça ne semble pas être un problème lié à mes tables mais effectivement à la présence du mot UNION dans ma requête CREATE TABLE AS.

  6. #6
    Membre averti Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Points : 390
    Points
    390
    Par défaut
    J'ai besoin de faire une requête du même genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Create Table Time as Select  s_date from sales
    Je veux savoir comment avoir en même temps dans ma table Time une colonne idTime de type auto-incrément.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    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 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Tu ajoutes une colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE Time
    ADD IdTime INTEGER NOT NULL UNSIGNED AUTO_INCREMENT
    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 !

  8. #8
    Membre averti Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Points : 390
    Points
    390
    Par défaut
    Merci !

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    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 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Un petit détail cependant (je pensais l'avoir ajouté à mon message précédent mais apparemment j'ai oublié) :
    Evite d'appeler des colonnes 'Date' ou 'Time' qui sont des mots du langage. Ca peut poser des problèmes.
    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 averti Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Points : 390
    Points
    390
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Un petit détail cependant (je pensais l'avoir ajouté à mon message précédent mais apparemment j'ai oublié) :
    Evite d'appeler des colonnes 'Date' ou 'Time' qui sont des mots du langage. Ca peut poser des problèmes.
    Tu as raison j'ai eu des problèmes comme ça dans le passé. C'était juste pour avoir une idée sur la manière de procéder. Merci pour la rappel.

Discussions similaires

  1. select in (select in (select in etc.))
    Par Christophe P. dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/01/2015, 12h34
  2. Create table à partir d'un selection bloquée
    Par fatati dans le forum SQL
    Réponses: 6
    Dernier message: 12/08/2010, 18h01
  3. Réponses: 6
    Dernier message: 20/11/2007, 12h14
  4. Retourner le nom des tables lors d'un SELECT UNION
    Par freesurfer dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/10/2007, 19h28
  5. "Create table..." à partir d'un "select"
    Par TraPpeur dans le forum Access
    Réponses: 3
    Dernier message: 21/11/2005, 13h23

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