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

PHP & Base de données Discussion :

Quelle commande SQL ? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 991
    Par défaut Quelle commande SQL ?
    Salut à tous,

    J'ai conçu un script pour mes besoin, jusqu'à là pas de problème, tout fonctionne à merveille.
    Ma BDD enregistre pas moins 500 entrées, en vue d'une amélioration d'utilisation de mon script, je dois créer un nouveau champ BDD et mon souci commence ici.

    En effet, je me vois mal de ré-saisi tous les champs d'un par un (il y en a pas moins 500 entrées), je me suis dit qu'il doit exister sûrement une commande SQL qui fera le boulot tout proprement et super rapidement et c'est pourquoi je me tourne vers vous.

    Mise en situation, ma BDD continent une table avec plusieurs champs (ID, no_DGL, nom, page, extrait), je dois ajouter un nouveau champ nommé "li_int".

    Le champ "ID" continent que des chiffres allant de 1 à 500.
    Le champ "li_int" doit être sous forme xxxx_yy_ID (xxxx_yy étant un exemple d'un texte masqué, ID correspond au numéro ID indiqué dans le champ ID).

    Connaitriez-vous une commande SQL qui permet "d'automatiser" la création d'un nouveau champ avec tout le contenu sans que je doive me taper 500 fois ?

    Restant à votre disposition pour tout renseignement complémentaire.
    Merci d'avance de votre réponse.

    Bon dimanche

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    créer un nouveau champ BDD

    là tu veut dire sur une table ; voila c'est expliqué dans la suite de ton post.
    Le champ "li_int" doit être sous forme xxxx_yy_ID (xxxx_yy étant un exemple d'un texte masqué, ID correspond au numéro ID indiqué dans le champ ID).
    Id c'est bon.
    xxxx ?????? yy ???? c'est quoi comme données est comment tu les récupères ?

    sinon le principe est simple:
    tu dois crée une procédure qui fait le boulo a ta place.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    DELIMITER //
    CREATE PROCEDURE maj(transacs)
    BEGIN
       DECLARE i INT DEFAULT 1;
       DECLARE li_int;
       ........................;
     
       WHILE i <= Transacs DO
          SET  = li_int;
     
          INSERT INTO transac (li_int) VALUES (li_int);
          SET i = i + 1;
       END WHILE;
    END //
    DELIMITER ;
    normalement c'est dans ce principe mais sa reste a vérifier.

  3. #3
    Membre émérite Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Par défaut
    tu crée ton champ dans la db

    puis si tu veux dans ce champ xxxx_yyy_ID

    update nom_de_ta_table set nom_du_nouveau_champ = "concat("xxxx_yyy_",nom_du_champ_id)";

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    oui , utilise update a la place d'insert. merci patrick

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 991
    Par défaut
    Bonjour,

    Je vous remercie de vos réponses.

    @redoran,
    En fait, j'ai déjà la table, elle existe (table nommé sc_gestionDGL) et je voulais ajouter une colonne des données qui s'appelle bien un "champ" n'est-ce pas ?
    Quant à xxx et yyy, c'est en fait des adresses des dossiers interne, pour le moment, elles sont unique mais qui va se développer et s'organiser avec des sous-dossiers prochainement.

    @patrickbaras,
    Avec votre formule, ça me retourne un "#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 'scripts/gest_DGL/",li_int)"' at line 1"

    Je suppose que le problème provient du fait de l'utilisation des / n'est-ce pas ? Comment y remédier ?

    Infos supplémentaire :

    J'ai oublié un petit détail, en fait dans ma table sc_gestionDGL, il y a des champs suivants : ID, no_DGL, nom, page et extrait

    Je voudrais ajouter un champ "li_int", qui doit contenir les valeurs xxx/yyy/no_DGL (au lieu d'ID, je ne l'avais pas précisé parce que je pensais que l'ID correspondait à no_DGL et ce n'est pas le cas, désolé)

    Je vous remercie d'avance de votre réponse.

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Pour ajouter un champs à une table suffit de faire un ALTER TABLE

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE matable ADD monChamps [description du champs]
    Le plus simple c'est de créer ton champs simplement et de le remplir ensuite avec un update en fonction des autres données
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. execution de 2 commandes sql simulanément
    Par manikou dans le forum MFC
    Réponses: 4
    Dernier message: 03/05/2005, 15h10
  2. Commande SQL / connaître taille d'1 base
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/04/2005, 11h38
  3. [JDBC] Commande SQL récalcitrante
    Par Dahu dans le forum JDBC
    Réponses: 7
    Dernier message: 05/04/2005, 16h03
  4. commande SQL truncate table xxx
    Par Yogy dans le forum SQL
    Réponses: 1
    Dernier message: 07/10/2004, 14h57
  5. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59

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