
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
05.10.2015, 22:45
|
|||
|---|---|---|---|
|
|||
Запрос нескольких значений многое ко многим |
|||
|
#18+
Добрый день. Помогите плиз новичку.. Есть табица User у нее есть поле inter, которое сязано отношением многое ко многим с таблицей Interest Есть список интересов: 1,7,3 1) как сделать запрос на возвращение всех юзеров у которых обязательно есть inter=1,7,3 ? 2) как сделать запрос всех юзеров у которых есть хотя бы одно значение из листа? С уважением, Антон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.10.2015, 23:17
|
|||
|---|---|---|---|
Запрос нескольких значений многое ко многим |
|||
|
#18+
ClosiusЕсть табица User у нее есть поле inter, которое сязано отношением многое ко многим с таблицей Interestddl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2015, 08:35
|
|||
|---|---|---|---|
|
|||
Запрос нескольких значений многое ко многим |
|||
|
#18+
Closius, Задача реляционного деления. На SQL традиционно решается через [NOT]EXISTS-подзапросы или через группировку с постфильтрацией (GROUP BY + HAVING) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2015, 11:31
|
|||
|---|---|---|---|
|
|||
Запрос нескольких значений многое ко многим |
|||
|
#18+
Щукина Анна, А можете дать ссылку где про это почитать или пример запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2015, 11:31
|
|||
|---|---|---|---|
|
|||
Запрос нескольких значений многое ко многим |
|||
|
#18+
Щукина Анна, И подзапросы вы имеете в виду вложенные запросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2015, 16:00
|
|||
|---|---|---|---|
|
|||
Запрос нескольких значений многое ко многим |
|||
|
#18+
Closius, Все оказалось довольно просто (user_inter - промежуточная таблица для many_to_many): SELECT DISTINCT user_id FROM user_inter WHERE inter_id = ANY(array[1,7,3]); Но это работает для случае 2. А вот для случая 1 наверно только вложенные запросы.. Типа в первом выбираем всех у кого есть 1, во втором всех у кого есть 7 и в третьем у кого есть 3. Каждый запрос фильтрует предыдущий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2015, 16:24
|
|||
|---|---|---|---|
Запрос нескольких значений многое ко многим |
|||
|
#18+
ClosiusClosius, <> А вот для случая 1 наверно только вложенные запросы.. Типа в первом выбираем всех у кого есть 1, во втором всех у кого есть 7 и в третьем у кого есть 3. Каждый запрос фильтрует предыдущий.it depends. в некоторых случаях можно таки через aggregate и having. вернее -- можно всегда, но при некоторой плотности интересов и их многообразии оно даже и проще. универсально (не по скорости) ~ Код: sql 1. 2. или Код: sql 1. 2. в случае, если интересов много и они редки -- дешевле через набор EXISTS-ов. хотя и генерировать скл придётся всякий раз. Или хранимочкой с циклом и статикой. (в т.ч. и WITH RECURSIVE по unnest(array_param), думается, можно нарисовать) ещё можно вместо реляционных интересов хранить их в array -- поле. И таки да -- индексировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2015, 17:23
|
|||
|---|---|---|---|
|
|||
Запрос нескольких значений многое ко многим |
|||
|
#18+
Closius, Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2015, 18:19
|
|||
|---|---|---|---|
Запрос нескольких значений многое ко многим |
|||
|
#18+
ursido, count(DISTINCT inter_id) = 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2015, 18:25
|
|||
|---|---|---|---|
Запрос нескольких значений многое ко многим |
|||
|
#18+
vyegorovursido, count(DISTINCT inter_id) = 3 в таблице связей обычно пк по паре id. т.ч. "скрипач не нужен" Или, если связь -- отдельная осмысленная сущность со своими отдельными от id связуемых заморочками -- хотя бы unique. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2015, 19:07
|
|||
|---|---|---|---|
|
|||
Запрос нескольких значений многое ко многим |
|||
|
#18+
Спасибо за ответы! Думаю стоит попробовать разные варианты ) qwwqещё можно вместо реляционных интересов хранить их в array -- поле. И таки да -- индексировать. И как целостность поддерживать? Тригерами? Не этот вариант мне не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=1997728]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 550ms |

| 0 / 0 |
