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....)
merci!!!
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....)
merci!!!
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.
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
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?
Merci
non. il suffit de faire une sauvegarbe du répertoire data et de la transférerdans la nouvelle version de MySQL.Envoyé par Garra
sinon, tout n'est pas à refaire, mais j'ai oublié la marche à suivre exacte.
Pensez au tag
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?
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
Ca y est! c'est fait et ça marche
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
(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
Ah oui? Et ça alors?:Envoyé par Garra
Voir également:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
Salut,
En suivant tes conseils j'ai fait
mais ça ne marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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!!
Bonjour et merci
Dès que j'enlève la condition
ça marche mais il me faut cette condition!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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...
Pensez au bouton
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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épart
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UPDATE table_temporaire SET truc='bidulle'
5) tu nettoyes ta table temporaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 REPLACE INTO table1 SELECT * FROM table_temporaire
Du coup, plus de problème de version ou de syntaxe !
Code : Sélectionner tout - Visualiser dans une fenêtre à part TRUNCATE TABLE table_temporaire
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UPDATE table1 INNER JOIN table2 ON (table1.id = table2.id) SET table1.titi = toto WHERE table2.type = 'xxx'
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager