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 :

insertion avec requête imbriquées


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Points : 16
    Points
    16
    Par défaut insertion avec requête imbriquées
    bonjour,

    je viens d'aller voir sur la faq de mysql et j'ai découvert que les requêtes imbriquées n'y étaient pas possible. Seulement, n'étant pas très doué en base de donné, je ne parviens pas à reformuler ma requête comme expliquée;

    Voici la requête en question:

    INSERT INTO users VALUES
    (null, 'nom','password', 'email', '2005-11-15', SELECT LAST_INSERT_ID(ID) FROM CITIES, 1,' 2005-11-15', 20000)

    D'après phpmyadmin c'est SELECT LAST_INSERT_ID(ID) FROM CITIES qui bloque, avec ce message d'erreur:
    #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 'SELECT LAST_INSERT_ID(ID) FROM CITIES, 1,' 2005-11-15', 20000)'
    Je suis bien embêté car si je ne peux pas faire ça, les interactions entre mes bases vont être bien compliquées à mettre en oeuvre

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO users select 'null', 'nom','password', 'email', '2005-11-15', LAST_INSERT_ID(ID), 1,'2005-11-15', 20000 FROM CITIES
    essaye voir comme ceci

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Parfait, merci infiniment

    Et surement à la prochaine

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    pense a mettre [résolu] dans ton titre

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    hum, oui, je comptais le faire une fois que les requêtes associées marcheraient.

    Et d'ailleurs justement, lorsque la suivante est celle-ci:
    INSERT INTO cities SELECT 'null', last_insert_id( id ) , 'ville' FROM users
    Cela me provoque l'erreur suivante:
    #1136 - Column count doesn't match value count at row 1
    la table cities contient égalemet un champs id qui s'auto-incrémente, y-a-t-il interférence?

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO cities SELECT 'null', last_insert_id( id ) , 'ville' FROM users
    pour faire une "bonne" requete d'INSERT en SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO cities (nomcolonne1,nomcolonne2...)  SELECT 'null', last_insert_id( id ) , 'ville' FROM users

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    oui, c'est vrai, en fait c'est ce que j'avais au départ mais ça me causait le même problème à savoir que j'ai deux tuples de créés

  8. #8
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Bonjour,

    LAST_INSERT_ID est une fonction qui n'est pas associée à une table, mais plutot à une session. La clause FROM est donc inutile dans ces requête.
    http://dev.mysql.com/doc/refman/5.0/...functions.html

    Le moyen de retrouver l'id d'une table donnée serait peut-être de faire une requête de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT auto_increment FROM information_schema.tables WHERE table_name='latable'\G
    Mais là, il y aura surement dans le cas présent un problème de droits et un autre de version.

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

Discussions similaires

  1. Requête Update avec requête imbriquée
    Par sybaris dans le forum Développement
    Réponses: 2
    Dernier message: 05/07/2008, 12h51
  2. Insert avec requête imbriquée
    Par kyra78 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/03/2008, 16h21
  3. [MySQL] formulaire insertion avec requête
    Par wail00 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 14/05/2007, 15h04
  4. Delete avec requête imbriquée et clé primaire
    Par boutss dans le forum Oracle
    Réponses: 4
    Dernier message: 12/03/2007, 15h32
  5. Réponses: 4
    Dernier message: 04/08/2005, 08h23

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