Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2011, 16h06   #1
Invité régulier
 
Inscription : novembre 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 67
Points : 6
Points : 6
Par défaut INSERT INTO avec un SELECT et table vide

Bonjour,

si la table est vide cette requête ne fonctionne pas
Code :
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
pol2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 16h48   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
???

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.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 17h05   #3
Invité régulier
 
Inscription : novembre 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 67
Points : 6
Points : 6
j'ai créé une table table_vide avec une ligne bidon (id=AUTO_INCREMENT et vide="")
Code :
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
pol2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 11h00   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 990
Points : 18 240
Points : 18 240
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/02/2011, 08h00   #5
Invité régulier
 
Inscription : novembre 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 67
Points : 6
Points : 6
pourquoi pas, mais dans mon cas il pourrait être effacé, il vaut mieux une autre table
pol2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 14h35   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 990
Points : 18 240
Points : 18 240
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 16h02   #7
Invité régulier
 
Inscription : novembre 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 67
Points : 6
Points : 6
Comment tu fais pour mettre un index UNIQUE sur la colonne "nom" ?
pol2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 16h16   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 990
Points : 18 240
Points : 18 240
Envoyer un message via MSN à CinePhil
Ça t'arrive de chercher par toi-même ?
En 30 secondes :
sur le critère "Mysql index unique".
1er lien vers la doc MySQL sur la page CREATE INDEX.

Si tu la veux en français, tu remplaces le "en" du lien par "fr".

Pas le temps de te faire la requête, faut que je parte.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 16h27   #9
Invité régulier
 
Inscription : novembre 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 67
Points : 6
Points : 6
Je voulais dire avec phpmyadmin, voilà ce qu'il me renvoie quand je veux créer un champ TEXT 'nom' avec un Index Unique
Citation:
#1170 - BLOB/TEXT column 'nom' used in key specification without a key length
pol2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 23h04   #10
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 990
Points : 18 240
Points : 18 240
Envoyer un message via MSN à CinePhil
Tu as des noms qui font plus de 255 caractères pour avoir choisi un type TEXT ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 23h10   #11
Invité régulier
 
Inscription : novembre 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 67
Points : 6
Points : 6
c'est bon j'ai réussi à le créer

Entre une colonne VARCHAR(255) et une colonne TEXT, y-a-t-il une différence en terme de performance
pol2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h38.


 
 
 
 
Partenaires

Hébergement Web