Voilà les erreurs qui montent :
Avec double select :
Voilà les erreurs qui montent :
Avec double select :
Ah, mais cela n'est qu'un problème de nom de table, dépendant du Gui utilisé, il est possible qu'il ajoute des guillemets, il suffit de les ôter pour retrouver "la bonne syntaxe".
D'ailleurs ces guillemets n'y sont pas dans les SQLs que nous avons proposés (j'ai eu un doute).
Cela étant, je préfère nettement celle sans double SELECT
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Bon j'ai repris mes essais ce matin, il y avait un problème de nom de table que je n'avais pas vu hier.
En remettant tout bien, le double select ne fonctionne pas et le simple select ne voit pas les ex aequo:
Faut-il encore orthographier correctement le champ : photos_id
Les exæquos c.-à-d., même numéro de rang ? ce n'était pas vraiment la demande ! Je croyais avoir trouvé une solution sur ce lien mais non
bien sûr, un script de remplissage de table pour avoir plus de données serait un atout pour contrôle plus complexe
Cela étant, c'est plus un problème SQL+MySQL donc le bon forum serait plus https://www.developpez.net/forums/f9...ysql/requetes/
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Tu as raison, j'ai fait vite ce matin, j'avais corrigé les autres mais pas celui là.
Ce n'est pas encore ça !! J'ai tenté de compléter par un GROUP BY place sans succès.
Place est unique, il n'y a rien à regrouper
Je ne suis pas un spécialiste MySQL mais comme cela me laissait un goût en arrière bouche, je me suis lancé après avoir étudié l'exemple que j'ai cité
traitera bien les exæquos
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SET @rang = 0; SET @prec = 0; SELECT if( (note1+note2+note3) = @prec , @rang, @rang:=@rang+1 ) rang, @prec:=Note1+note2+note3, photos_id,note1,note2,note3, note1+note2+note3 AS totalcalcule, GREATEST(note1,note2,note3)- LEAST(note1,note2,note3) AS Ecart FROM notes ORDER BY totalcalcule DESC
comme on voyait la colonne @prec.... je me suis dit que
plus un ordre au sein des exæquos sur photos_id pour toujours avoir un résultat cohérent
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SET @rang = 0; SET @prec = 0; SELECT if( (note1+note2+note3) = @prec , @rang, @rang:=@rang+1 ) rang, @prec:=Note1+note2+note3 AS totalcalcule, photos_id,note1,note2,note3, -- note1+note2+note3 AS totalcalcule, GREATEST(note1,note2,note3)- LEAST(note1,note2,note3) AS Ecart FROM notes ORDER BY totalcalcule DESC,photos_id
N.B. bien sûr avec une version moderne DENSE_RANK() au lieu de RANK() aurait fait le job
maintenant si (dans mon jeu d'essai) on doit passer du rang 2 (les exæquos) au rang 4 et non 3
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Peut-être ceci traite-t-il le souci de place des suivants d'ex-aequo au prix d'une colonne inutile à l'affichage
La colonne Ecart a-t-elle d'ailleurs une utilité, alors qu'elle ne rentre pas dans le classement (elle pourrait bonifier pour un même total l'homogénéité des notes ou l'obtention d'une plus forte, au choix) ?
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SET @rang = 0; SET @prec = 0; SET @clas = 1; SELECT if( (note1+note2+note3) = @prec , @rang, @rang:=@clas ) rang, @prec:=Note1+note2+note3 AS totalcalcule, @clas:=@clas+1 AS intermediaire, photos_id,note1,note2,note3, GREATEST(note1,note2,note3)- LEAST(note1,note2,note3) AS Ecart FROM notes ORDER BY totalcalcule DESC,photos_id
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Pour Andnotor :dans mon idée, je voulais grouper les lignes ayant la même note pour leur attribuer la même place...Place est unique, il n'y a rien à regrouper
Pour Sergio :oui je confirme !!on doit passer du rang 2 (les exæquos) au rang 4 et non 3
Oui Toulourou c'est bon !!
Qu'il y ait une colonne inutile à l'affichage, c'est le dernier de mes soucis, car en plus les résultats ne sont pas destinés a être affiché comme ça mais je les retraduit sous forme d'images avec texte dans des fichiers writer de libre office.
Le colonne Ecart semble ne servir à rien, mais avec la même extraction j'affiche les meilleurs photos et/ou les plus gros écarts de notes.
Dans tous les cas merci pour votre acharnement et vos compétences dans le domaine. J'ai découvert pleins de choses !!!!
J'ai maintenant quelque mois pour les mettre en pratique, car pour le week-end prochain j'ai du faire des choses à la main... J'aurais du me réveiller plus tôt et anticiper les bugs de la fédé !!
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