powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица...
9 сообщений из 9, страница 1 из 1
Таблица...
    #33043894
maximator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую господа, в общем есть таблица

id (int)
owner_id (int)
......
begin_user_id (int)
to_users_id (text)
......

begin_user_id - это айди пользователя, родителя (автора)

to_users_id - вот тут я нашел 2 решения, это список айди пользователей для кого доступны эти данные (нельзя выделить группы айди, они могут быть произвольны).

Первое решение:
хранить тут список в виде 4,6,10,14,55 и т.д., т.е. ID[,]

так удобно, да, но возникает вопрос, как зделать выборку
если так
SELECT * FROM table WHERE to_users_id LIKE '$ID'
не кактет, т.к. возможен выбор для id=9 чисел 9,99,999 и т.д.
если делать ..... LIKE '$ID,' то опять же возможен вариант что будет айди последним и у него не будет запятой.

вотрой вариант, это делать доп. таблица, где есть id, id_table, to_user_id и делать уже дозапрос через нее.

подскажите как решить это? может есть еще вариант?
...
Рейтинг: 0 / 0
Таблица...
    #33043898
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+++++++++++++++
Рекомендую Вам написать, какой SQL-сервер вы пользуете.
Реализация наверняка сильно зависит от конкретной СУБД.
После этого топик будет перенесен в соответсвующий форум.
...
Рейтинг: 0 / 0
Таблица...
    #33043899
ap99ap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если очень не хочешь сделать нормально (с дополнительной таблицей), то храни список айди в виде строки с одинаковым разделителем и делимитером в конце и в начале строки (как например это может быть пробел).

Тогда лайк по айди, обрамленному пробелами (или что там выберешь) вернет то что нужно.
...
Рейтинг: 0 / 0
Таблица...
    #33043920
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maximatorПервое решение:
хранить тут список в виде 4,6,10,14,55 и т.д., т.е. ID[,]
Нарушение первой нормальной формы. Причем именно в том виде, в котором некто Кодд объяснял, чем это нарушение плохо.

maximatorтак удобно, да,
Удобно? Хм.

maximator но возникает вопрос, как зделать выборку
А, ну да. Ботинки удобные, только стерли ноги.

Если очень не хотите нормализовать - идите в Oracle. Там Вы сможете хранить этот список как nested table и работать с ним средствами SQL.
...
Рейтинг: 0 / 0
Таблица...
    #33043978
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
begin_user_id - это айди пользователя, родителя (автора)

to_users_id - вот тут я нашел 2 решения, это список айди пользователей для
кого доступны эти данные (нельзя выделить группы айди, они могут быть
произвольны).

Это не по-английски.
Это какая-то американоподобная тарабарщина.

Лучше
parent_id
allowed_users_identities



Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Таблица...
    #33044042
maximator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2+++++++++++++++
Рекомендую Вам написать, какой SQL-сервер вы пользуете.
Реализация наверняка сильно зависит от конкретной СУБД.
После этого топик будет перенесен в соответсвующий форум.

Сорри, забыл, MySQL 3.x/4.x

Vitamin
Это не по-английски.
Это какая-то американоподобная тарабарщина.

это то здесь причем, для примера даны названия полей
...
Рейтинг: 0 / 0
Таблица...
    #33044303
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
select t1.* from t1, t2 where t2.FK=t1.id and t2.allowedUserID=$ID
без пол-литры разберёсси?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно ц
...
Рейтинг: 0 / 0
Таблица...
    #33044407
maximator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmo
Код: plaintext
select t1.* from t1, t2 where t2.FK=t1.id and t2.allowedUserID=$ID
без пол-литры разберёсси?

Сенкс! Разобрался, тока возвращяется не то что нужно:

Запрос:
SELECT jobs.* FROM jobs,jobs2users WHERE jobs2users.to_user_id='2' AND jobs.id IN(jobs2users.job_id) вернет одну запись (верную, но одну) ну или
SELECT jobs.* FROM jobs,jobs2users WHERE jobs2users.to_user_id='2' AND jobs.id =jobs2users.job_id
вернет тоже самое. а записи с to_user=1 в таблице 3-и штуки:

id to_users
1 1
2 1
3 1
4 0
5 0

в табле jobs2users:
id job_id to_user_id
1 1 1
2 1 2

запрос след. вида:
SELECT jobs.* FROM jobs,jobs2users WHERE jobs2users.to_user_id='2'
вернет все записи из jobs, хотя у 4 и 5 айди ваще 0 в to_users

я застрял %) в чем моя ошибка?




SELECT jobs.* FROM jobs,jobs2users WHERE jobs.id=jobs2users.job_id

вернет:
1 запрос (т.к. групировал по id):
id=1,...,
...
Рейтинг: 0 / 0
Таблица...
    #33044690
maximator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему %) тема закрыта
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]