php mysql déduction dans un select

Eléphanteau du PHP | 27 Messages

23 déc. 2011, 11:32

Bonjour,
Dans une base de données j'ai des enregistrements détenant un top à "1" ou à "2" et une date de mise à jour.
J'arrive à récupérer les enregistrements avec top à "2" et date de mise à jour différente de la date du jour et aussi ceux avec top à "1" (facile jusque là)
Mais je souhaite en retirer les enregistrements ayant un top à "1" et existant déjà dans la sélection (c'est à dire ceux qui détiennent le top à "2" et la date de mise à jour différente de la date du jour.
Auriez-vous une idée ?
Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 déc. 2011, 12:40

bonjour,

oui c'est surement possible, mais sans les tables on ne peux pas beaucoup t'aider hors mis en t'indiquant que cela ce fait surement avec un prédicat correct (where) voir une sous requête.


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 27 Messages

23 déc. 2011, 15:35

Voilà un extrait de la base,
Je souhaite donc récupérer les enregistrements qui sont à "2" et dont le jour est différent du jour présent (vendredi) et sinon les enregisterements à "1"

indicatif jour top
AAAA lundi 0
AAAA vendredi 2
AAAA mardi 0
AAAA jeudi 1
BBBB mercredi 2
BBBB lundi 1

donc, il faut que j'obtienne :
AAAA jeudi 1
BBBB mercredi 2

A vot' bon coeur !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 déc. 2011, 21:15

select * from table where (jour <> 'lejourdujour' and top=2) or top=1;

tu peux obtenir "lejourdujour" avec la fonction [url=http:///www.php.net/date]date[/url] de php et le paramètre l (L minuscule) après je crois qu'en jouant avec la locale tu peux l'avoir direct en français, sinon la traduction n'est pas trop dur à faire :)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 27 Messages

27 déc. 2011, 12:40

Merci pour ta réponse, mais de ce cas, j'obtiens deux fois BBBB.
Une fois car le top est à 1 et une autre fois car le jour est différent du jour de saisie (le vendredi).
Mon problème est de n'obtenir qu'un seul enregistrement quand il y a doublon et que celui-ci contienne le top à 2.
Merci quand même.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 déc. 2011, 00:42

Le jour de la semaine s'obtient directement avec une fonction MySQL: DAYOFWEEK, voir ici: http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html ou dans la FAQ post59136.html#p59136

Pour supprimer les doublons dans une requete voir DISTINCT.

Mammouth du PHP | 2278 Messages

28 déc. 2011, 14:45

Voilà un extrait de la base,
Je souhaite donc récupérer les enregistrements qui sont à "2" et dont le jour est différent du jour présent (vendredi) et sinon les enregisterements à "1"

indicatif jour top
AAAA lundi 0
AAAA vendredi 2
AAAA mardi 0
AAAA jeudi 1
BBBB mercredi 2
BBBB lundi 1

donc, il faut que j'obtienne :
AAAA jeudi 1
BBBB mercredi 2

A vot' bon coeur !
avec limit 1 order by top?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 27 Messages

29 déc. 2011, 18:19

Hélàs, non, ça ne ressort qu'un seul enregistrement.