Различные вопросы по PHP и MySQL

244K
.
# Rakovskiy (30.07.2015 / 13:23)
Ты наверное думал, что он с логами сервера работает?
сперва кается когда погугли ДА... потом глубже копать стал.
Я просто увидел один кусок кода мне нужный а понять не мог, вроде пых а вроде и нет..
Там математичиская галиматья такая что без двух литров не осилить...
.
Fublin, Стесняюсь спросить, тебе лень почитать доку? Ведь это самый глупый вопрос который ты написал!
.
Jahak, Поверь, это еще не самый глупый его вопрос
.
The Fast, Secure and Professional - Yii2
# Jahak (31.07.2015 / 16:53)
Fublin, Стесняюсь спросить, тебе лень почитать доку? Ведь это самый глупый вопрос который ты написал!
Чё там с блогом, разработка полным ходом идёт?
.
The Frontend-Warrior
# Rakovskiy (31.07.2015 / 17:47)
Чё там с блогом, разработка полным ходом идёт?
Ой, всё! (с)
.
Здравствуйте!

Нужна поддержка в составлении структуры БД.
Сразу оговорюсь, что рассматривал варианты с 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
Всего: 7969