Ik met mijn slechte MySQL kennis kwam niet uit het volgende geval:
Ik heb 2 querys en deze wil ik samen voegen tot 1. Ik heb gegoogled en vond veel antwoorden over Inner Join maar het lukte mij maar niet en wist ook niet goed hoe ik moest en kon beginnen. Graag kunnen jullie mij helpen.
Query 1:
SELECT user_rank FROM user WHERE user_id=5
Query 2:
SELECT rank_rank FROM rank WHERE rank_id=user_rank Deze user_rank krijg je dus uit de query daarboven
Ik kan me niet zo veel voorstellen van de tabel structuur die je hebt bedacht. Maar volgens mij moet het zoiets worden...
<?php
$userId = 5;
$sql = 'SELECT u.user_id, rr.rank_rank
FROM user AS u
INNER JOIN rank AS r
ON user_rank = rank_rank
WHERE u.user_id = '. (int) $userId;
?>
De volgende query is eruit gekomen: SELECT user.user_id, rank.rank_rank FROM user AS user INNER JOIN rank AS rank ON user_rank = rank_id WHERE user.user_id='$id'
Waar wordt die rank door bepaald, als die afhankelijk is van de hoogte van een bepaalde score van de user dan heb je die tweede tabel niet nodig.
Voorbeeld:
SELECT
user_name,
user_score,
FIND_IN_SET(user_score,
(SELECT GROUP_CONCAT(user_score
ORDER_BY user_score DESC)
FROM users)) AS ranking
FROM users
[WHERE user_id = 5]
@Ger,
Elke keer verbaas ik me er weer over dat je het voor elkaar krijgt een query te bouwen waar elementen in zitten die ik nog niet ken :-)
Altijd leerzaam!
In de eerste tabel (user) staan alle user informatie zoals username, password, id maar ook rank_id. Deze rank_id staat ook in een andere tabel (rank) waaraan rank id is gekoppeld aan een rank naam.