Bonjour,
j'ai besoin d'aide pour une requête qui doit selectionner les enregistrements qui possèdent la valeur MAX d'un champ précis...
Voici les enregistrements de ma table (2tables en fait, mais je simplifie):
et voici ma requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Id Edition Titre 1 2009 Expo de paris 2 2008 Expo de paris 3 2007 Expo de paris 4 2006 Expo de paris 5 2008 Expo de berlin 6 2007 Expo de berlin 7 2006 Expo de berlin
(où this.nom_table = wb_exposition et $titre est 1 paramètre que je passe car je veux selectionner les enregistrements dont le titre est différent de celui affiché dans ma page au moment de la requête)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $req_sql = "SELECT DISTINCT " . $this->nom_table . ".id, wb_exposition_langue.titre FROM " . $this->nom_table ; $req_sql .= " LEFT JOIN wb_exposition_langue ON " . $this->nom_table . ".id = wb_exposition_langue.id_exposition" ; $req_sql .= " LEFT JOIN wb_langue ON wb_exposition_langue.langue = wb_langue.code_iso" ; $req_sql .= " WHERE wb_langue.default_langue = 'Y'" ; $req_sql .= " AND " . $this->nom_table . ".actif = 'Y'" ; $req_sql .= " AND wb_exposition_langue.titre != '".$titre."'" ; $req_sql .= " AND edition=(SELECT MAX(edition) FROM wb_exposition)" ;
Et ce que je veux donc, c'est selectionner les enregistrement où le titre est différent de celui passée en param. et dont la valeur Edition est la MAX parmi chaque titre...
Bon, ça doit paraitre un peu brumeux comme explication je pense...
Donc pour être + clair :
Si je passe 'Expo de paris' en paramètre, il doit me retourner l'enregistrement dont l'id=5 (car 'Expo de berlin' != 'Expo de paris' et 2008 = MAX 'Edition' pour ce titre)
Et si par exemple j'avais ces enregistrements en + dans ma table:
il devrait me retourner les deux enregistrements suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Id Edition Titre 8 2004 Expo de pekin 9 2003 Expo de pekin 10 2002 Expo de pekin
Mais il ne me retourne rien car il prend en compte le MAX du champ 'Edition' que d'une manière générale, et non pas pour chaque titre sélectionné...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Id Edition Titre 5 2008 Expo de berlin 8 2004 Expo de pekin
Je sais que le bug vient de la dernière ligne, mais je ne sais pas comment lui dire de selectionner l'enregistrement où se trouve le MAX du champ 'Edition' pour chaque titre...
Merci d'avance pour votre aide
Partager