# Rakovskiy (30.07.2015 / 13:23)
Ты наверное думал, что он с логами сервера работает?
сперва кается когда погугли ДА... потом глубже копать стал.
Я просто увидел один кусок кода мне нужный а понять не мог, вроде пых а вроде и нет..
Там математичиская галиматья такая что без двух литров не осилить...
Fublin, Стесняюсь спросить, тебе лень почитать доку? Ведь это самый глупый вопрос который ты написал!
Jahak, Поверь, это еще не самый глупый его вопрос
# Jahak (31.07.2015 / 16:53)
Fublin, Стесняюсь спросить, тебе лень почитать доку? Ведь это самый глупый вопрос который ты написал!
Чё там с блогом, разработка полным ходом идёт?
Здравствуйте!
Нужна поддержка в составлении структуры БД.
Сразу оговорюсь, что рассматривал варианты с LIKE, SET и т.д. но может есть более оптимальные решения?
И так, сам вопрос.
Есть таблица пользователей:
users
---------
id | name | etc ...
----------------
1 | Yura | etc...
2 | Egor | etc...
И таблица групп:
groups
-------------
id | name | etc...
-----------------
1 | grup | etc...
Как присвоить пользователю из таблицы users сразу несколько групп, да так, чтобы выборка списка всех пользователей с указанием принадлежности сразу ко все группам занимала как можно менее ресурсов, т.е. самый оптимальный вариант.
Т.е. результат должен выглядеть примерно так:
1. Yura (grupa1)
2. Egor (grupa2 grupa3)
и т.д.
Также важен момент, чтобы можно было производить фильтр пользователей по этим же группам.
Заранее благодарен.
perdator, Как вариант - сделать 3'ю таблицу group_users с полями usеr_id, group_id и в нее уже вписывать юзеров которые вступают в групы, а выборку делать связкой 1-N через join, в итоге чтоб вытащить всех юзеров в групе достаточно будет 1 запроса, так же как и все группы в которых участвует юзер
FROSTY!?, Такой вариант также рассматривал, но он мне показался более ресурсоемким. Например, выбрать всех юзеров у которых аккаунт имеет vip и пренадлежит группе # 2.
Users:
id l name l vip l
Запрос вида:
Select * from users WHERE vip = 1 AND { и тут условие принадлежности к определенной группе, например, #2}
Результат:
Вася (состоит в группе #2 и #6 и #3)
И т.д.
Условия такие ка на примере vip в таблице users намного больше.
perdator, Логика запроса у тебя не та, надо искать в таблице group_users где ид групы = 2, + через join прикрепить юзеров где users.id = group_users.user_id , и отсеять те результаты где users.vip != 1
я б тебе полностью запрос написал, но увы я с тела да и синтаксис join не помню ибо привык уже к активРекорд
FROSTY!?, Что ж, уже поздно, да и я с тела, т.к по вечерам комп зачастую занят женским полом)
Завтра попробую еще раз поэкспериментировать. По-моему этот случай называется "раздельнве связи" или что-то типа этого.
Жаль, что приходится ради одного поля придумывать такие сложные запросы. А ведь основные поля для фильтра находятся в таблице users и имеют простые значения типа 1 или 0