|
|
|
| Добрый день
такой вопрос
есть таблица users
и таблица msgs
так вот из таблицы msgs нужно выбрать 10 случайных уникальных user_id и подставить к каждому user_id соответствующее поле login из таблицы users ....
соответствие такое
тоесть нужно получить на выходи массив типа
array(
array(
'user_id'=>1,
'login'=>'marchello'
),
array(
'user_id'=>19,
'login'=>'test'
),
array(
'user_id'=>7,
'login'=>'usver'
),
и тд.
)
|
а в идеале ещё и получить значение count в котором хранилось бы кол-во записей в таблице msgs для данного user_id
тоесть примерно так
array(
array(
'user_id'=>1,
'login'=>'marchello',
'count'=>'94'
),
array(
'user_id'=>19,
'login'=>'test',
'count'=>'3'
),
array(
'user_id'=>7,
'login'=>'usver',
'count'=>'7'
),
и тд.
)
|
| |
|
|
|
|
|
|
|
для: m@rchello
(15.09.2008 в 09:26)
| | Ээээ... аааа... структуру таблици вы сами придумывали?
по идее должно быть так:
id_msg|user_id|msg| .......
|
и при этом уникальных user_id
Он вообще сам по себе должен быть уникальным как собственно и логин | |
|
|
|
|
|
|
|
для: Valick
(15.09.2008 в 09:41)
| | >и при этом уникальных user_id
>Он вообще сам по себе должен быть уникальным как собственно и логин
они уникальны в таблице users .... но в таблице msgs храняца сообщения этих пользователей ....
если так будет понятней то не "уникальных" а 10 "случайных, разных пользователей" из таблицы msgs
что касается структуры .... то я считаю, что не обязательно должно быть так как вы написали.
если я не прав, то обьясните пожалуста почему. | |
|
|
|
|
|
|
|
для: m@rchello
(15.09.2008 в 10:25)
| | Что бы мне было понятнее...
Надо было написать выборка десяти случайных сообщений от неповторяющихся пользователей. | |
|
|
|
|
|
|
|
для: m@rchello
(15.09.2008 в 09:26)
| | >так вот из таблицы msgs нужно выбрать 10 случайных уникальных user_id и подставить к каждому user_id соответствующее поле login из таблицы users ....
почему не выбрать сразу из таблицы users?
SELECT users.id, msg_tbl.`count`, login FROM users
LEFT JOIN (SELECT COUNT(id) AS `count`, user_id FROM msgs GROUP BY msgs.user_id)
AS msg_tbl ON users.id = msg_tbl.user_id
ORDER BY RAND()
LIMIT 10;
|
| |
|
|
|
|
|
|
|
для: Root
(15.09.2008 в 11:22)
| | почему не выбрать сразу из таблицы users
я к этому и клонил)))
Сначала выбрать случайных 10 юзеров, а уже потом выбрать случайное сообщение от каждого из них.
что касается структуры .... то я считаю, что не обязательно должно быть так как вы написали.
если я не прав, то обьясните пожалуста почему
как только вы мне обьясните почему вода мокрая... так я вам расскажу почему структура таблици должна быть такой)) | |
|
|
|
|
|
|
|
для: Valick
(15.09.2008 в 11:24)
| | >Сначала выбрать случайных 10 юзеров, а уже потом выбрать случайное сообщение от каждого из них.
случайное сообщение? | |
|
|
|
|
|
|
|
для: Root
(15.09.2008 в 11:31)
| | мне не нужны случайные сообщения ..... мне нужны случайные ПОЛЬЗОВАТЕЛИ КОТОРЫЕ ДОБАВЛЯЛИ СООБЩЕНИЯ! | |
|
|
|
|
|
|
|
для: m@rchello
(15.09.2008 в 11:48)
| | и в чем проблема? | |
|
|
|
|
|
|
|
для: Root
(15.09.2008 в 11:49)
| | Уже не в чём .... вы показали пример уже .... это сообщение было адресовано товарищу Valick | |
|
|
|
|
|
|
|
для: m@rchello
(15.09.2008 в 11:56)
| | Тогда выражайтесь яснее:
В базе есть пользователи которые добавляли сообщения и которые не добавляли сообщения. Необходимо выбрать 10 случайных пользователей из числа добавивших сообщения. | |
|
|
|
|
|
|
|
для: Root
(15.09.2008 в 11:22)
| | Страшная вещь, по-моему...
Я бы разбил на два запроса. | |
|
|
|
|
|
|
|
для: Trianon
(15.09.2008 в 12:20)
| | а я бы колличество сообщений в отдельном поле хранил. | |
|
|
|