J'utilise Oracle Developer 11g. J'ai une base de données de 100 joueurs de football. J'ai une table appelée PROFILE_PLAYERS qui a des colonnes suivantes:Utilisation d'une procédure pl-sql pour sélectionner la meilleure équipe de la base de données des joueurs
player_id, player_name, attack_skill(number),
defense_skill(number), passing_skill(number), GK_skill(number)
Maintenant, je veux former une équipe de 11 joueurs qui contient 3 meilleurs attaquants (le plus attack_skill), 4 meilleurs milieux de terrain (le plus passing_skill), 3 meilleurs défenseurs (meilleure défense_skill) et 1 meilleur GK (meilleur GK_skill).
Je veux écrire une procédure qui affiche les 11 meilleurs joueurs avec leurs nom joueur et joueur. Puis-je utiliser rank() ici? Dois-je utiliser pour la boucle avec un compteur dans la procédure?
Cela peut tout être fait dans une seule instruction SQL; vous n'avez pas besoin d'utiliser PL/SQL du tout. Maintenant, vous savez, à quel point pensez-vous que vous pouvez l'essayer par vous-même? Vous pensez que vous devriez utiliser 'rank()', l'avez-vous essayé? Obtenez-vous les résultats que vous voulez? Si non, _why_? C'est la question que vous devriez constamment vous poser, _why_? C'est aussi la question que vous devriez constamment poser aux autres si vous ne comprenez pas leur explication de quelque chose. Vous ne comprendrez jamais et ne serez pas en mesure d'entreprendre vous-même toute tâche de programmation. – Ben
c'est une question intéressante. Je pense que vous devez définir un ordre pour évaluer les compétences. par exemple, si un attaquant n ° 1 est également n ° 1 défenseur - que considérez-vous être? Comme dit @Ben, la fonction de classement est ce que vous cherchez. – haki
@haki, je n'ai pas dit que la fonction 'rank()' était ce que l'OP recherchait, je ne pense pas que ce soit parce qu'il y a des trous dans la séquence. En théorie, vous n'avez pas du tout besoin d'utiliser une fonction analytique. – Ben