Xwab
Форумыnavigate_nextПрограммирование на PHP

Помогите составить правильно запрос к базе
Сообщения
Plain

Ребят помогите составить запрос в базу правильно.есть таблица users мне из неё нужно вытащить user_id , username , rating я это сделал

$top_user=$db->get_array("SELECT user_id, username, rating FROM #__users ORDER BY rating DESC LIMIT 3");

но мне помимо этого запроса парралельно нужно ещё вытащить avatar из таблицы users_profile как это сделать в одном запросе правильно?просто с этим ещё не разобрался как следует.повозился и не выходит...по примеру легче.напишите пожалуйста правильный запрос

31 Авг 2012, 12:24
Flyd

SELECT #__users.user_id, #__users.username, #__users.rating,users_profile.avatar FROM #__users LEFT join users_profile On #__users.uid = users_profile.uid ORDER BY rating DESC LIMIT 3

Что-то типа такого, только я на память написал, не проверяв. Что за странное имя таблицы #__users?

31 Авг 2012, 12:38
Plain

Flyd, к сожалению не работает

31 Авг 2012, 12:41
Flyd

проверь условие #__users.uid = users_profile.uid

31 Авг 2012, 12:43
Plain

Flyd, это префикс таблицы #__
таблицы сами users и users_profile
в запросе они пишуться как #__users и #__users_profile

общих полей нет у этих таблиц


__________
посл.ред. 31 Авг 2012, 12:46; всего 1 раз 31 Авг 2012, 12:44
Flyd

id в какой колонке записываются?

31 Авг 2012, 12:46
Plain

Flyd, в таблице #__users ид в первой колонке называется user_id а в #__users_profile тоже в первой но называется id

31 Авг 2012, 12:48
Wins

Flyd, #__ потом превращается в указанный префикс.
[php:1:d1372861a5]$top_user=$db->get_array("SELECT u.user_id, u.username, u.rating, up.avatar FROM #__users AS u LEFT JOIN #__users_profile AS up ORDER BY u.rating DESC LIMIT 3");[/php:1:d1372861a5]

31 Авг 2012, 12:49
Plain

Wins, спасибо Диман.но выдало ошибку:

SELECT u.user_id, u.username, u.rating, up.avatar FROM a_users AS u LEFT JOIN a_users_profile AS up ORDER BY u.rating DESC LIMIT 3
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY u.rating DESC LIMIT 3' at line 1

31 Авг 2012, 12:52
Flyd

Wins пишет:
"Flyd, #__ потом превращается в указанный префикс.
[php:1:271218ac24]$top_user=$db->get_array("SELECT u.user_id, u.username, u.rating, up.avatar FROM #__users AS u LEFT JOIN #__users_profile AS up ORDER BY u.rating DESC LIMIT 3");[/php:1:271218ac24]"

Ты условие соединения забыл

[php:1:271218ac24]$top_user=$db->get_array("SELECT u.user_id, u.username, u.rating, up.avatar FROM #__users AS u LEFT JOIN #__users_profile AS up ON u.user_id = up.id ORDER BY u.rating DESC LIMIT 3");[/php:1:271218ac24]

31 Авг 2012, 12:55
Ответить на тему