2013-07-16 2 views
-1

Мне нужно выбрать результаты из таблицы моих пользователей и заказать их по рейтингу, хранящемуся в rtgitems. В таблице пользователей каждый пользователь имеет уникальный идентификатор, который используется в rtgitems в столбце элемента, таком как rt_ (идентификатор из таблицы пользователей).Выберите из таблицы mysql, используя данные из другой таблицы

Вот код, который я использую, чтобы выбрать из таблицы пользователей:

$result = mysqli_query($con,"SELECT * FROM users WHERE `approved` = 1 ORDER BY "); 

Вот код, чтобы получить оценки от стола rtgitems

SELECT `item` 
     , (`totalrate`/`nrrates`) AS `rank` 
FROM `rtgitems` 
ORDER BY (`totalrate`/`nrrates`) DESC 
+0

Это время ответили много раз. – Chris78

+0

Я сделал, я ничего не мог найти. Я всегда делаю поиск сначала перед публикацией –

+0

Вам просто нужно использовать внутреннее соединение. Что вы пробовали? – enl8enmentnow

ответ

1

Запрос, как это должно вернуться указанный ResultSet:

SELECT u.* 
    , r.totalrate/r.nrrates AS `rank` 
    FROM users u 
    JOIN rtgitems r 
    ON r.user_id = u.id 
WHERE u.approved = 1 
ORDER BY r.totalrate/r.nrrates DESC, u.id ASC 

Коротко: оператор JOIN указывает, что строки из двух таблиц (пользователей и rtgitems) должны быть «сопоставлены» на основе предикатов в предложении ON.

Всякий раз, когда в запросе упоминается более одной таблицы, наилучшей практикой является выбор всех ссылок на колонки. Обычно проще назначить уникальный псевдоним для каждой ссылки на таблицу. (Это короткое имя u и r, данное таблице пользователей и таблицам rtgitems соответственно. Ссылки на столбцы в этих таблицах предшествуют псевдонимам и точкам (период).

+0

Проблема в том, что в поле id пользователей это всего лишь номер, но в rtgitems это rt_, а затем номер –

+0

, который не приносит никаких результатов. –

+0

неважно, это просто потому, что поле id на самом деле является user_id , поэтому я получил его. Спасибо за вашу помощь –

Смежные вопросы