MySQL "Für Jeden"

Ich versuche, stellen Sie eine code-Frage-website, wie CodeChef.

So weit, ich habe zwei Tabellen, problems und submissions.

problems besteht aus einem einzigen id Feld, welches auto_incremented. (Es hat wirklich mehr Felder, aber Sie sind nicht relevant.)

submissions besteht aus einem id Feld, welches auto_incremented, eine problem_id Feld, welches foreign key-ed problems.id, und ein bool correct Feld.

Hier sind Ihre (vereinfachte) Schaffung Aussagen:

create table problems
(
    id bigint auto_increment primary key not null,
    /* more fields that are unimportant */
);
create table submissions
(
    id bigint auto_increment primary key not null,
    problem_id bigint not null,
    correct bool not null,
    /* more fields */

    foreign key (problem_id) references problems(id)
);

Nun, was ich versuche zu tun, ist die folgende:

Für jeden id im problems, Zeile zurück, die aus der ID, die Anzahl der richtigen Einsendungen für das problem, und die Gesamtzahl der Einreichungen für dieses problem.

Im Grunde, ich möchte die folgende Abfrage verwenden:

select
    problems.id,
    sum(submissions.correct),
    count(submissions.id)
from submissions inner join problems
on submissions.problem_id=problems.id and problems.id=[problem_id];

wo [problem_id] geht über jeden id im problems.

Es scheint, wie ich brauchen, um eine sub-Abfrage, aber ich habe es versucht und es funktionierte nicht bei allen.

Wie erstelle ich eine Abfrage diese Ergebnisse?

InformationsquelleAutor Jashaszun | 2013-12-18
Schreibe einen Kommentar