[Mysql] requete facile mais pas pour moi (edit :p)

Oulà le forum clubic a pas mal changé en 1 an :hello: :hello:

Je vous explique mon prob :

Bon j’ai une table “articles” qui contient des… articles avec chacun leur ID

J’ai une table “commentaires” :


id --> id du commentaire
id_art --> id de l'article commenté
date---> format datetime date du comm

J’ai ajouté une colonne date_comm sur les “articles” qui est sensée contenir la date du dernier commentaire correspondant à l’article… (format datetime)

Maintenant je voudrais eviter d’avoir à remplir ce champ à la main et donc automatiser ça avec php…


par ex là j'ai dans commentaires

id  |   id_art |  date
20 |   12      |  2005-05-17 .....
21 |   15      |  2005-06-01 .....
22 |  12        |  2005-07-15....

et je veux que ma table articles se remplisse comme ça :

id  |   |  date_comm
12         2005-07-15
15         2005-06-01 

Quelqu’un peut il me faire un script php pour automatiser ça ?? :jap: :hello: :clap:

Je suis d’accord. Tu me payes 500€ (travail au noir, je risque beaucoup, etc) et je te le fais.

(…)

:smiley:

J’en connais un qui abuse légèrement … :smiley:

Entre demander des conseils et demander qu’on te fasse ton travail pour lequel tu vas être payé, y a une marge que tu viens de dépasser :clap:

Euh mais lol… c’est pour mon blog je vais pas être payer stop la parano quoi…

Effectivement si personne ne peut me faire une boucle qui fait des updates en série pour m’éviter de changer 150 enregistrements à la main je vais poster ailleurs :confused:

J’ai fait ca en cours il y a 15 jours et je sais déjà plus comment ca marche ^^

c’est pas SELECT UPDATE ?

plutot update select :smiley:


Update Table 1
set ladate=(select ladate2 from Latable2 where condition)

Heu, tu m’excuseras zebulon, mais ici c’est un forum d’entraides. pas un forum où on doit créer les scripts pour les autres…

alors là je comprends pas pourquoi vous voulez pas lui répondre…

Si c’est pour vous la peter parce que vous savez faire alors restez entre vous et lezebulon va poster sur d’autres forums sur des sites francophones spécialisés dans le développement par exemple ;). Juste pour dire c’est ce que j’ai fait depuis peu et franchement les gens sont moins prétentieux, globalement plus compétents et plus serviables…
A++ on t’attend :wink:

C’est pas de la prétention, c’est juste ne pas être pris pour des cons.

grumble.

tiens voilà ton truc :

(… culpabilité de merde)

SELECT 
  CONCAT(
    'UPDATE artcile SET date = ', MAX(date_comm), ' WHERE id_article = ', id_article, ';' )
  )
FROM commentaire 
GROUP BY id_article

Et surtout me dis pas que tu pouvais pas le faire tout seul…

[edit] note toutefois que tu devrais oula éxécuter les requêtes crées.

(et au passage, je sais pas si faire

UPDATE article A
SET date = (
  SELECT MAX(date_comm)
  FROM commentaire C
  WHERE C.id_article = A.id_article
)

)

serait pas mieux… (et si ça fonctionne en fait, mais bon … cf doc mySQL sur l’UPDATE avec jointure)

by the way : http://dev.mysql.com/doc/mysql/en/update.html

(…)

une question au passage, les sous requete comme ça, ça mrche avec mySQL 4.0.x ?

Moi j’ai jamais testé sous mysql.

Seulement SQL server et ORACLE qui sont c’est vrai, un peu plus puissant (juste un tout petit peu lol)…

Mais je pense que ca doit etre possible. C’est du SQL de base

Les sous-requêtes ce n’est qu’à partir de MySQL 4.1 :wink:

De toute façon, avec la première requête qui ne fait que créer des requêtes d’UPDATE, pas besoin de se taper le truffion à coup de sous requête :o