UPDATE avec utilisation de distinct

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : UPDATE avec utilisation de distinct

par gandolfi » 18 mai 2009, 18:01

en cherchant un peu sur internet j'ai récupéré cette fonction qui marche.

Code : Tout sélectionner

UPDATE wp_posts P1 SET post_status = 'publish' WHERE P1.post_status = 'draft' AND NOT EXISTS( SELECT p2.* FROM (SELECT post_author,post_date FROM wp_posts p3 WHERE p3.post_status = 'draft' ) P2 WHERE p2.post_author=P1.post_author AND P2.post_date<P1.post_date )
Mais elle s'arrete dès que l'auteur est en double et je n'ai pas reussi a integrer le fait de pouvoir valider le meme auteur si les articles sont dans des categories differentes.

par GiorgioLino » 18 mai 2009, 10:38

En attendant de lire ton message d'erreur, quelques pistes à explorer pour toi :

1) Utilisation des simples quotes dans ta requête :

ws_post est une table, donc elle sont inutiles

SELECT DISTINCT post_author FROM 'wp_posts'

Idem pour post_date qui est un champ cette fois-ci.

ORDER BY 'post_date'



2) Conformité de la requête par rapport au résultat attendu:

UPDATE wp_posts
SET post_status = 'publish'
WHERE post_status = 'draft'
jusqu'ici c'est bon


and post_author IN
(SELECT DISTINCT post_author FROM 'wp_posts')

ici ta condition équivaut simplement à "post_author existe" ou "post_author a posté au moins une fois", ce qui n'est pas exactement ce que tu voudrais faire ;
tu voudrais qu'il ait posté dans au moins deux catégories différentes.



ORDER BY 'post_date'
ASC LIMIT 2

une clause ORDER BY s'applique nécessairement à une clause SELECT. Or ici elle s'applique au UPDATE (puisqu'elle est hors de la parenthèse) ce qui n'a pas de sens.
A modifier donc.



Ces quelques indications devraient t'aider à résoudre ton problème si ce n'est pas déjà fait.

par GiorgioLino » 18 mai 2009, 10:09

@gandolfi

très souvent, quand il s'agit de programmation, une partie de la solution se trouve dans le message d'erreur.

Alors je te conseille d'éditer le message d'erreur que tu reçois si tu veux aider les forumistes...à t'aider.


Bon codage.

par gandolfi » 17 mai 2009, 20:49

J'ai mis le nom de la table : "wp_posts"
cette table contient les champs : "post_author", "post_status" et "post_category"

- Je veux édité 15 articles/jours d'auteurs differents en les passant de "post_status = draft" à "post_status = publish"
- Par contre je veux faire en sorte que si l'auteur repertorié dans "post_author" est present plus d'une fois pour la meme categorie, le champ soit sauté et passe au prochain article avec un auteur different.

C'est à dire que je peux poster plusieurs articles du meme auteur à partir du moment ou ceux-ci sont dans des categories differentes.

Merci

par sadeq » 17 mai 2009, 18:47

rien compris car ce que tu dis n'est pas logique. Essaye de reformuler par un exemple.

UPDATE avec utilisation de distinct

par gandolfi » 15 mai 2009, 20:30

Salut,

je cherche a updater un champ par ordre chronologique avec la condition que le post_author soit different pour eviter les doublons.

J'ai essayé cette commande mais il me retourne une erreur SQL.

create table

Code : Tout sélectionner

UPDATE wp_posts SET post_status = 'publish' WHERE post_status = 'draft' and post_author IN (SELECT DISTINCT post_author FROM 'wp_posts') ORDER BY 'post_date' ASC LIMIT 2
Merci pour votre aide