Список пользователей и 3 любимых фильма.

Mihail Ptrovich
Дата: 26.01.2013 23:46:16
Здравствуйте, может подобное уже обсуждалось. Я поискал и не нашел то что нужно мне.

Есть база данный со списком пользователей. id / name / и так далее.
Есть база связка со список любимых фильмов. user_id / film_id

Нужно вырисовывать список пользователей и под имена 3 любимых фильма.
Сейчас сделано так:
SELECT id, name FROM users LIMIT 15

Далее когда начинаем вырисовывать php в каждом цикле делается запрос:
SELECT film_id FROM film_link WHERE user_id = id(из базы users)LIMIT 3

И происходит цикл где отображает 3 любимых фильма.

Это получается 1 запрос на построения списка пользователей и 15 на вывод любимых фильмов.
Можно это сделать одним запросом? пока пользователей не так много, но при нагрузке мне кажется mysql не понравится лишние 15 запросов.
Спасибо за ответы, вроде понятно задал вопрос.
tanglir
Дата: 27.01.2013 14:58:12
Mihail Ptrovich,

7489069
Mihail Ptrovich
Дата: 27.01.2013 23:43:30
Спасибо, но что за час не разобрался. ошибки. Завтра еще попробую.
Мне бы было бы удобно что бы с моими именами столбцов написали.

Спасибо.
Mihail Ptrovich
Дата: 29.01.2013 21:50:31
В общем по ссылки совсем другое, Вопрос открыт.
пока что пошел на другие форуму спрашивать где люди более активные.
javajdbc
Дата: 29.01.2013 22:04:31
Mihail Ptrovich
В общем по ссылки совсем другое, Вопрос открыт.
пока что пошел на другие форуму спрашивать где люди более активные.


1. уверяю вас что по ссылке 100% то что вы хотите

2. я не вижу как можно было еше больше разжевать
тот топик про топ-Н квери.

3. Когда люди говорят что у них вылезают ошибки,
обычно проводят исходный СКЛ и точный текс ошибки.

4. Успехов вам на других форумах.
Mihail Ptrovich
Дата: 29.01.2013 22:15:30
javajdbc
1. уверяю вас что по ссылке 100% то что вы хотите

2. я не вижу как можно было еше больше разжевать
тот топик про топ-Н квери.

3. Когда люди говорят что у них вылезают ошибки,
обычно проводят исходный СКЛ и точный текс ошибки.

4. Успехов вам на других форумах.


1. Делаю все по конструкции выводит 3 одинаковых поля за исключение тех где фильмы. Но это можно сделать без переменных.
Мне вывод нужен
user_id, film_id1, film_id2, film_id3
То что по ссылке делает:
user_id, film_id(только тут разные значения)
user_id, film_id
user_id, film_id

2. Учитывая что я первый раз вижу что в запросах можно присваивать перемные и там есть if. И там совсем другое.

3. ошибок уже нет, в пунк 1 такой вывод.

4. Да спасибо, посмотрим как там, а потом на фриланс.
javajdbc
Дата: 29.01.2013 22:24:24
Mihail Ptrovich
javajdbc
1. уверяю вас что по ссылке 100% то что вы хотите

2. я не вижу как можно было еше больше разжевать
тот топик про топ-Н квери.

3. Когда люди говорят что у них вылезают ошибки,
обычно проводят исходный СКЛ и точный текс ошибки.

4. Успехов вам на других форумах.


1. Делаю все по конструкции выводит 3 одинаковых поля за исключение тех где фильмы. Но это можно сделать без переменных.
Мне вывод нужен
user_id, film_id1, film_id2, film_id3
То что по ссылке делает:
user_id, film_id(только тут разные значения)
user_id, film_id
user_id, film_id

2. Учитывая что я первый раз вижу что в запросах можно присваивать перемные и там есть if. И там совсем другое.

3. ошибок уже нет, в пунк 1 такой вывод.

4. Да спасибо, посмотрим как там, а потом на фриланс.


1. вы изначально не указали что надо в одну строчку.
решается добавлением

select user_id, GROUP_CONCAT (film_id)
from
(
автор
То что по ссылке делает:
user_id, film_id(только тут разные значения)
user_id, film_id
user_id, film_id

)
group by user_id

2. да, переменные -- вполне легальный способ работы в мускл.
Вы просили решение -- оно там.

3. если нет ошибок, то не говорите что есть ошибки.
если есть ресультат, который вас не устраивает, то
уточняйте что есть и что надо.

4. Всегда пожалуйста.
javajdbc
Дата: 29.01.2013 22:30:00
да. еще, если надо таки в отдельных столбцах, то:

select
user_id,
max(if(film_number=1, film_id, null) film_id1,
max(if(film_number=2, film_id, null) film_id2,
max(if(film_number=3, film_id, null) film_id3
from
(
автор
То что по ссылке делает:
user_id, film_id(только тут разные значения)
user_id, film_id
user_id, film_id

)

film_number -- это порадковый номер который
получается в топике с переменными
(по ссылке которая вам не понравилась)
Mihail Ptrovich
Дата: 29.01.2013 22:33:41
javajdbc,

Да действительно я подразумевал под одним запросом, выводить в одну строчку. Моя ошибка.

GROUP_CONCAT решилось почти все, и не нужны некакие if и переменные.

Спасибо большое, я же не зря сказал что там не то.=)
Mihail Ptrovich
Дата: 29.01.2013 22:35:47
За отдельные столбци спасибо тоже за код, может и так сделаю.

Дальше все равно уже как php распаривать на вывод. Главное что одна строчка под одного пользователями и один запрос на всех пользователей. Спасибо.