Bonjour
Je rêve ou sur mysql on ne peut pas faire comme sur Oracle par exemple
une requete du genre
update table set titi = 'toto' where id in (select id from table where....)
:pc: :evil: :furax:
merci!!!
:fou:
Version imprimable
Bonjour
Je rêve ou sur mysql on ne peut pas faire comme sur Oracle par exemple
une requete du genre
update table set titi = 'toto' where id in (select id from table where....)
:pc: :evil: :furax:
merci!!!
:fou:
MySql sait gérer les requetes imbriquées a partir de la version 4.1 je crois.
Peut etre as tu une version plus ancienne ?
Tu peux le faire à partir de la version 4.1 seulement.
Sinon, tu peux certainement faire la même chose sans requête imbriquée, éventuellement avec une jointure.
Effectivement, j'ai la version 4.0 :?
Si j'installe la version 5.0, j'écrase ma base?
J'ai easyphp.
Que dois-je installer et comment pour ne pas avoir à tout refaire? :nono:
Merci :koi:
:fou:
non. il suffit de faire une sauvegarbe du répertoire data et de la transférerdans la nouvelle version de MySQL.Citation:
Envoyé par Garra
sinon, tout n'est pas à refaire, mais j'ai oublié la marche à suivre exacte.
Tu peux sans doute faire la même chose sans requêtes imbriquées, c'est quoi la requête que tu essayes de faire?
Ca y est! c'est fait et ça marche :fem:
J'ai installé la version suivante de easyphp avec tout le tralala
et la version 4.1 de mysql
Mais pour info:
il me semble impossible de faire un update du genre (c'est un exemple):
udpate table1 set titi = toto where id in (select id from table2 where type = 'xxx')
avec une jointure....., le update ne le permet pas :nono:
(c'est bizarre que mysql ait mis autant de temps à s'adapter à une
base comme oracle par exemple (celle que je préfère))
Merci à tous et chau chau chau :coucou: :coucou: :coucou:
:fou:
Ah oui? Et ça alors?:Citation:
Envoyé par Garra
Voir également:Code:
1
2
3
4
5
6 UPDATE table1 INNER JOIN table2 ON (table1.id = table2.id) SET table1.titi = toto WHERE table2.type = 'xxx'
http://www.developpez.net/forums/viewtopic.php?t=423925
:bravo:
ah d'acc, ça n'existait pas "à mon époque" :calin:
:fou:
Salut,
En suivant tes conseils j'ai fait
mais ça ne marche pasCode:UPDATE particule INNER JOIN particulegroupe ON ( particule.idNum = particulegroupe.idNum ) SET particule.dateAffichage = NOW( ) WHERE particule.idNum IN ( 2, 33, 32, 37, 11, 27, 29, 28, 14, 26, 45, 41, 48, 27, 40, 17, 45, 36, 26, 4, 1, 18, 30, 20, 31, 6, 38, 40, 2, 41, 27, 5, 25, 11, 43, 37, 38, 24, 16, 4, 2, 12, 45, 1, 40, 36, 18, 36, 24 ) AND particulegroupe.codeGroupe = 'FOND'
Merci de m'aider!! :fou:
Quel message d'erreur ?
Bonjour et merci
Dès que j'enlève la condition
ça marche mais il me faut cette condition!!Code:
1
2 AND particulegroupe.codeGroupe = 'FOND'
Merci
En fait ça marche sur ma base local 4.1 mais le problème c'est que mon super hebergeur ne me mets à dispo que la version précédente de
mysql et là, ça ne marche pas!
MySQL a répondu:
C'est tout ce que j'ai comme erreurCode:
1
2
3#1064 - You have an error in your SQL syntax near 'INNER JOIN particulegroupe ON ( particule.idNum = particulegroupe.idNum ) SET ' at line 1
Merci
C'est quelle version exactement ? On dirait qu'il ne supporte pas les UPDATE multi-tables...
J'ai peut-être une solution alternative:
1) tu créés une table temporaire
2) dans cette table temporaire, tu insères tous les enregistrements qui seront affectés par le changement:
3) tu fais ton UPDATE sur les enregistrements de ta table temporaire:Code:
1
2
3
4
5 INSERT INTO table_temporaire SELECT table1.* FROM table1 INNER JOIN table2 ON ... WHERE ...
4) tu "commit" les changements dans la table de départCode:
1
2 UPDATE table_temporaire SET truc='bidulle'
5) tu nettoyes ta table temporaire :Code:
1
2
3 REPLACE INTO table1 SELECT * FROM table_temporaire
Du coup, plus de problème de version ou de syntaxe !Code:TRUNCATE TABLE table_temporaire
Oui, j'avais pensé à faire quelque chose comme
cela mais c'est du bricolage insupportable.
J'ai fait oracle pendant 15 ans, et je inner join
n'était pas en tout cas à mon époque, utilisé.
T'en fais pas, je trouverais une solution plutôt côté mémoire (array)
car peu de données
Merci!!!
Salut
Je te remercie grace a ce topic j'ai trouvé la bonne syntaxe qui marche en effet
Code:
1
2
3
4
5 UPDATE table1 INNER JOIN table2 ON (table1.id = table2.id) SET table1.titi = toto WHERE table2.type = 'xxx'