requête mysql : insert into where exists ?

requête mysql : insert into where exists ? - SQL/NoSQL - Programmation

Marsh Posté le 31-10-2008 à 19:48:09    

Bonjour,  
 
je ne comprends pas où est l'erreur de ma requête :

Code :
  1. INSERT INTO vote(note,date_vote,id_theme) SELECT (3,CURDATE(), SELECT id FROM theme WHERE CODE='1') WHERE EXISTS(SELECT * FROM theme t2 WHERE t2.CODE='1')


 
Je souhaite insérer un ligne dans vote qui fait réference à un theme dont je connais le code. Uniquement si ce code existe (WHERE EXISTS).
J'ai tenté plusieurs requêtes dans ce style, sans succès !
 
Pouvez-vous m'aider ?
 Merci


Message édité par ___ le 31-10-2008 à 19:51:57
Reply

Marsh Posté le 31-10-2008 à 19:48:09   

Reply

Marsh Posté le 31-10-2008 à 19:53:18    

euh, insert select select select?? t'es sur de toi là? ta syntaxe me parait particulièrement étrange :o


Message édité par skeye le 31-10-2008 à 19:53:48

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 31-10-2008 à 19:56:36    

lol pardon pour le mauvais copier coller!
 
INSERT INTO vote(note,date_vote,id_theme) VALUES (
    3,
    CURDATE(),
    SELECT id FROM theme WHERE CODE='1')
 WHERE EXISTS(SELECT * FROM theme t2 WHERE t2.CODE='1')

Reply

Marsh Posté le 31-10-2008 à 19:58:56    

pourquoi tu as deux where??
et ton exists sert à rien...

 
Code :
  1. INSERT INTO vote(note,date_vote,id_theme)
  2. (
  3. SELECT
  4.    3,
  5.    CURDATE(),
  6.     id FROM theme
  7. WHERE CODE='1'
  8. )


Message édité par skeye le 31-10-2008 à 19:59:54

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 31-10-2008 à 20:01:45    

car avec ta requête l'insertion se fera (ou pas avec ma contrainte not null) si le code n'existe pas.
Non ? je voudrais éviter l'insert si CODE n'existe pas, avec une seule requête.
 
Edit : Ca y est je comprends, ta syntaxe marche car le select ne retourne rien et donc il n'y a aucun insert de réalisé. Tout simplement.
Merci beaucoup. Conclusion : avant de se prendre la tête et chercher compliqué, commencer par un code simple !

Message cité 1 fois
Message édité par ___ le 31-10-2008 à 20:08:42
Reply

Marsh Posté le 31-10-2008 à 20:17:59    

___ a écrit :


Edit : Ca y est je comprends, ta syntaxe marche car le select ne retourne rien et donc il n'y a aucun insert de réalisé


voilà :D


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

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