Je dois trouver le nom du buteur et des buts de but maximum marqué.
J'ai fait cela en utilisant 1ère approche: p> 2ème approche: p> 3ème approche: < / p> Je sais que ceux-ci imprimeront que les noms ne sont que des objectifs totaux marqués, mais ils ne sont même pas d'imprimer des noms. P> Où je le fais mal? p> p> but_details (Goal_id, player_id, taper_id, goot_time) code> p> lecteur_mast (player_id , Joueur_Name) CODE> P> Joindre code> mais incapable de le faire avec sous-requête.
S'il vous plaît aider. P>
3 Réponses :
J'utiliserais Si vous préférez capturer tous les joueurs liés à la première place, remplacez-la, remplacez row_number code> ici: Row_Number code > avec rang code>. Notez que j'ai agrégé à la fois par player_id code> et lecteur_name code>, au cas où deux joueurs peuvent avoir le même nom. P> P>
Après 1 heure, j'ai mon examen SQL si vous pouvez me dire les erreurs dans le programme ci-dessus, il sera vraiment utile de savoir pourquoi il n'imprime pas le nom du meilleur buteur? Je sais que votre méthode est la meilleure mais maintenant, le temps est moins s'il vous plaît aider frère
@akashking honnêtement la version que j'ai donnée ci-dessus est ce que je recommanderais d'utiliser ici. Vous attendez-vous à être invité à écrire la requête d'une autre manière?
with goal_details(goal_id,player_id,team_id,goal_time) as (
select 1, 1, 1, 10 from dual union all
select 2, 2, 2, 20 from dual union all
select 3, 2, 2, 30 from dual union all
select 3, 3, 3, 30 from dual
),
player_mast(player_id,player_name) as (
select 1, 'First' from dual union all
select 2, 'Second' from dual union all
select 3, 'Thirth' from dual
)
select
max(p.player_id) keep (dense_rank last order by count(*)) as max_scorer_id,
max(p.player_name) keep (dense_rank last order by count(*), p.player_id) as max_scorer_mame,
max(count(*)) as max_count
from goal_details d
join player_mast p on p.player_id = d.player_id
group by p.player_id, p.player_name;
MAX_SCORER_ID MAX_SC MAX_COUNT
------------- ------ ----------
2 Second 2
Où je le fais mal? P>
Vous obtenez un
ora-00913: trop de valeurs code> exception p>Ceci est parce que vous avez la syntaxe: p>
xxx pré> et votre filtre code> dans code> doit avoir le même nombre de valeurs à gauche comme dans la liste à droite; Donc, supprimez la partie
(lecteur_id) code> partie de vos valeurs de retour de la sous-requête: p>xxx pré> alors votre première tentative devrait fonctionner: P> < Pré> xxx pré>
dB <> violon P > blockQuote>