Hilfe bei SQL-Abfrage

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Cebrox
User
Beiträge: 1
Registriert: Samstag 4. Dezember 2021, 16:55

Guten Abend zusammen,

ich stecke momentan bei einer MySQL-Abfrage fest. Eventuell könnt ihr mir helfen.

Das sind die drei Tabellen um die es geht:
User:
Bild

Level:
Bild

User_EXP:
Bild


Geschafft habe ich mit folgendem Befehl schon folgendes:

Code: Alles auswählen

select u.User_ID, u.User_Name, SUM(EXP) as EXP from User u LEFT JOIN User_EXP e on u.User_ID = e.User_ID GROUP BY u.User_ID
Ergebnis:
Bild

Ich hätte jetzt gerne bei obriger Abfrage noch das aktuelle Level des Users dazu. Aber irgendwie habe ich so einen Brain-Bug, dass ich nicht auf das Ergebnis komme.

Vielen Dank schonmal!
Cebrox
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Mit einem Subquery.
Vereinfachtes Beispiel:

Code: Alles auswählen

drop table if exists user;
create table user (id integer, username varchar(100), exp int);
insert into user (id, username, exp) values (1, 'Level 0 user', 0);
insert into user (id, username, exp) values (1, 'Level 2 User', 75);
drop table if exists level;
create table level(level int, exp int);
insert into level(level, exp) values (0, 0);
insert into level(level, exp) values (1, 35);
insert into level(level, exp) values (2, 55);
insert into level(level, exp) values (3, 115);
insert into level(level, exp) values (4, 215);
select id, username, exp, (select level.level from level where level.exp<=user.exp order by level.exp desc limit 1) as level from user;
Antworten