ok klein probleempje:

Ik heb een tabel users, met een aantal kolommen waaronder rankpoints.

Daarnaast heb ik een tabel ranks met een aantal kolommen waaronder min_points en name.

Nu wil ik alles van users selecteren en daarbij ook ranksname, maar deze zijn niet via een normale join te koppelen omdat min_points het minimum is dat nodig is.

Ik had het zo opgelost:

<? SELECT *, ranks.name FROM users
LEFT JOIN ranks ON ranks.min_points =< users.rankpoints ?>

Opzich werkt het wel, alleen krijg iik per gebruiker alle rankgen terug die hij ooit heeft gehad.. dus per gebruiker meer dan 1 rang ( voor de meeste dan ).

VB:
<?
users:
username rankpoints
--------------------------
blaat 500
blaat2 100


ranks:
name min_points
---------------------------
r1 10
r2 100
r3 499
r4 899
?>

Als ik deze query dus uitvoer dan krijg ik dit resultaat:

<?
username ranks.name
--------------------------------
blaat r1
blaat r2
blaat r3
blaat2 r1
blaat2 r2
?>

Maar nu wil ik alleen de hoogste rang per user hiervan.. dit dus:

<?
username ranks.name
--------------------------------
blaat r3
blaat2 r2
?>

ik hoop dat het een beetje duidelijk is.

Als iemand mij kan helpen graag.
Het staat echt als r3 in je database? (dat is niet erg handig, beter is alleen het nummer van de rank, en de rank in een smallint veld zetten, dan kan je max(rank) gebruiken.
De ranks database heeft ook een id inderdaad. Maar hoe zou je dat dan doen met MAX().ik kom er niet echt uit

Reageren