Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица... / 9 сообщений из 9, страница 1 из 1
30.04.2005, 12:03
    #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
30.04.2005, 12:13
    #33043898
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица...
+++++++++++++++
Рекомендую Вам написать, какой SQL-сервер вы пользуете.
Реализация наверняка сильно зависит от конкретной СУБД.
После этого топик будет перенесен в соответсвующий форум.
...
Рейтинг: 0 / 0
30.04.2005, 12:13
    #33043899
ap99ap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица...
Если очень не хочешь сделать нормально (с дополнительной таблицей), то храни список айди в виде строки с одинаковым разделителем и делимитером в конце и в начале строки (как например это может быть пробел).

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

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

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

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

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

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

Лучше
parent_id
allowed_users_identities



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

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

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

это то здесь причем, для примера даны названия полей
...
Рейтинг: 0 / 0
01.05.2005, 01:12
    #33044303
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица...
Код: plaintext
select t1.* from t1, t2 where t2.FK=t1.id and t2.allowedUserID=$ID
без пол-литры разберёсси?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно ц
...
Рейтинг: 0 / 0
01.05.2005, 13:13
    #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
02.05.2005, 07:39
    #33044690
maximator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица...
Решил проблему %) тема закрыта
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Таблица... / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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