[SQL][Resolu] requete imbriqué

requete imbriqué [SQL][Resolu] - SQL/NoSQL - Programmation

Marsh Posté le 21-03-2011 à 16:26:12    

Bonjour,  
 
Je souhaiterais récupérer l'Id lors de la création d'une nouvelle ligne dans une table par requête imbriqué.
 
Exemple:
 
Je possède une table image ayant comme champs ID int, text1 Text, text2 Text
 
Lors de mon INSERT INTO image (ID, text1, text2) VALUES ('','valeur1','valeur2');  
Il auto incrémente le champ ID.
 
J'aimerais récupérer cette ID par une requête Imbriqué, savez vous comment faire svp?
 
J'ai essayé :
 
Select ID AS INSERT INTO image (ID, text1, text2) VALUES ('','valeur1','valeur2');  
 
Mais bien sur ca ne fonctionne pas :)
 
Merci

Message cité 1 fois
Message édité par alcapone59 le 22-03-2011 à 15:08:17
Reply

Marsh Posté le 21-03-2011 à 16:26:12   

Reply

Marsh Posté le 21-03-2011 à 16:34:22    

li faut le faire en deux fois


---------------

Reply

Marsh Posté le 21-03-2011 à 18:40:26    

alcapone59 a écrit :

Bonjour,  
 
Je souhaiterais récupérer l'Id lors de la création d'une nouvelle ligne dans une table par requête imbriqué.
 
Exemple:
 
Je possède une table image ayant comme champs ID int, text1 Text, text2 Text
 
Lors de mon INSERT INTO image (ID, text1, text2) VALUES ('','valeur1','valeur2');  
Il auto incrémente le champ ID.
 
J'aimerais récupérer cette ID par une requête Imbriqué, savez vous comment faire svp?
 
J'ai essayé :
 
Select ID AS INSERT INTO image (ID, text1, text2) VALUES ('','valeur1','valeur2');  
 
Mais bien sur ca ne fonctionne pas :)
 
Merci


 
 
Si ton SGBD autorise les transactions (ex :http://www.commentcamarche.net/for [...] ctions-sql)
 
alors un insert suivi d'un select max(ID) ... à l'intérieur d'une transaction et ça devrait le faire
 
 
 


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 22-03-2011 à 08:16:16    

Si c'est du SQL Server tu peux utiliser la clause OUTPUT qui fera pil ce que tu veux.

Reply

Marsh Posté le 22-03-2011 à 08:27:26    

Bonjour et merci pour vos réponses.
 
J'utilise WAMP5 avec PHPmyAdmin.
 
Je vais regarder vos pistes.  
 
Cordialement,

Reply

Marsh Posté le 22-03-2011 à 08:34:31    

si tu utilises PHP, tu peux trouver le dernier id insérer avec MYSQL_LAST_ID

Reply

Marsh Posté le 22-03-2011 à 09:21:25    

antac a écrit :

si tu utilises PHP, tu peux trouver le dernier id insérer avec MYSQL_LAST_ID


 
 
Non j'utilise Visual Basic 6 :( domage car j'avais trouvé mysql_insert_id(INSERT ...) qui aurait peu fonctionné  :pt1cable:

Reply

Marsh Posté le 22-03-2011 à 09:59:03    

Bon au final je vais procéder par deux requête, j'aurais bien aimé optimisé si possible :)  
 
L'insert puis la requete suivante :
SELECT id FROM ma_table ORDER BY id DESC LIMIT 1

Reply

Marsh Posté le 22-03-2011 à 10:01:36    

ça c'est pas une bonne idée, si tu as eu d'autres insertions en parallèle, le résultat peut etre faussé  
 
tu fais ton insertion , puis tu lances la requete SELECT  LAST_INSERT_ID() qui va te retourner le dernier enregistrement inséré pour ta connection ( et pas pour les eventuels autres clients)


---------------

Reply

Marsh Posté le 22-03-2011 à 10:26:37    

Bon je viens de tester et ca fonctionne parfaitement.
 
Par contre je ne vois pas comment je peux récupérer la valeur en VB6 :(


Message édité par alcapone59 le 22-03-2011 à 11:36:12
Reply

Marsh Posté le 22-03-2011 à 10:26:37   

Reply

Marsh Posté le 22-03-2011 à 14:20:51    

SELECT LAST_INSERT_ID() as NewID
 
En VB, tu récupères le champ "NewID"...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-03-2011 à 14:52:54    

Humm étrange, j'ai déjà testé mais ca ne marche pas, ca me m'était que le NewID était inconnu.
 
Je ferais d'autre test demain.
 
Encore merci

Reply

Marsh Posté le 22-03-2011 à 15:07:56    

Bon ca fonctionne, j'avais du faire une erreur au paravent :)
 
Un grand merci à vous tous.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed