2015-02-07 4 views
5

Ich habe SQL-Abfragen gemacht, aber habe keine Prozedur geschrieben, die Schleifen verwendet, so dass ich hier verloren bin. Ich verwende Oracle SQL Developer. Kann in SQL oder PL/SQLSchleife durch eine Tabelle in Oracle PL/SQL

Ich habe eine Tabelle, die diese ähneln geschehen:

Person_ID Score Name Game_ID 
1   10 jack 1 
1   20 jack 2 
2   15 carl 1 
2   3  carl 3 
4   17 steve 1 

Wie kann ich Schleife durch diese Tabelle so, dass ich einen Spieler Gesamttreffer für alle gespielten Spiele greifen kann. Ergebnis wäre wie folgt:

Person_ID Score Name 
1   30 jack 
2   18 carl 
4   17 steve 

Auch extra credit was, wenn ich einfach sagen wollte Spiele 1 2?


EDIT: Sorry für die nicht klar zu sein, aber ich muß dies mit einer Schleife tun, auch wenn es ohne es getan werden kann.

+1

Was meinst du, "Kann in SQL oder PL/SQL gemacht werden"? SQL hat kein Konzept von Schleifen, es ist eine Set-basierte Sprache. –

Antwort

11

Lösung nach Post Ausgabe

Diese Prozedur Liste Noten für gegeben game_id. Wenn Sie Parameter nicht alle Spiele summiert werden:

create or replace procedure player_scores(i_game_id number default null) as 
begin 
    for o in (select person_id, name, sum(score) score 
     from games where game_id = nvl(i_game_id, game_id) 
     group by person_id, name) 
    loop 
    dbms_output.put_line(o.person_id||' '||o.name||' '||o.score); 
    end loop; 
end player_scores; 

Bisherige Lösung:

Sie brauchen keine Verfahren für das, nur einfache Abfrage:

select person_id, name, sum(score) 
    from your_table 
    where game_id in (1, 2) 
    group by person_id, name 
+0

Danke für die Antwort, aber ich brauche es tatsächlich eine Prozedur mit einer Schleife zu sein – AmericanSuave

+0

Fertig. Ich würde Ihre Daten in zwei Tabellen aufteilen: Spiele und Spieler, aber es liegt an Ihnen. –

Verwandte Themen