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

Requêtes MySQL Discussion :

INSERT INTO avec un SELECT et table vide


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut INSERT INTO avec un SELECT et table vide
    Bonjour,

    si la table est vide cette requête ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO ma_table (nom, txt) 
    SELECT 'un_nom', 'un_texte' 
    FROM ma_table 
    WHERE NOT EXISTS (
      SELECT * 
      FROM ma_table WHERE nom = 'un_nom') 
    LIMIT 1
    y-a-t-il un moyen de la faire fonctionner avec une table vide

    merci

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    ???

    si ta table est vide, comment tu veux la lire comme source de donnée?

    D'ailleurs tu m'as mis un doute à lire et écrire dans la même table avec une seule requête.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    j'ai créé une table table_vide avec une ligne bidon (id=AUTO_INCREMENT et vide="")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO ma_table (nom, txt) 
    SELECT 'un_nom', 'un_texte' 
    FROM table_vide 
    WHERE NOT EXISTS (
      SELECT * 
      FROM ma_table WHERE nom = 'un_nom') 
    LIMIT 1
    et ça fonctionne

  4. #4
    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
    Pourquoi ne pas mettre tout simplement un index UNIQUE sur la colonne "nom" ?
    Ça éviterait la donnée inutile pour que la requête fonctionne et ce sera sûrement plus performant.
    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 !

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    pourquoi pas, mais dans mon cas il pourrait être effacé, il vaut mieux une autre table

  6. #6
    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
    Citation Envoyé par pol2095 Voir le message
    dans mon cas il pourrait être effacé
    À bon parce que chez toi tout le monde peut administrer les BDD et enlever une contrainte d'unicité qui est pourtant en principe dictée par les règles de gestion des données ?
    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. insert into avec le select
    Par vaness303 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/05/2009, 17h53
  2. insert into avec un select
    Par vaness303 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/05/2009, 14h54
  3. INSERT INTO avec un SELECT et SUBQUERY
    Par ruscov dans le forum SQL
    Réponses: 5
    Dernier message: 22/04/2008, 11h22
  4. Insert Into avec un Select
    Par Tintou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/10/2007, 17h07
  5. [Débutant] INSERT INTO avec VALUES + SELECT
    Par Feezdev dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/06/2006, 10h10

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