powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как сделать запрос без группировки или вложенного запроса?
12 сообщений из 12, страница 1 из 1
Как сделать запрос без группировки или вложенного запроса?
    #39201150
Gorden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Простые таблицы:

Таблица users (пользователи)
user_id
user_name

Таблица groups (группы к которым принадлежат пользователи)
user_id
group_id

Пользователь может принадлежать к нескольким группам одновременно. Например нужно найти / отфильтровать пользователей принадлежащих к группам 1 и 2. Запросы:
Код: sql
1.
2.
3.
4.
5.
SELECT users.user_id, users.user_name 
FROM users
JOIN groups ON users.user_id = groups.user_id 
WHERE groups.group_id IN (1,2)
GROUP BY users.user_id 



или

Код: sql
1.
2.
3.
4.
SELECT DISTINCT users.user_id, users.user_name 
FROM users 
JOIN groups ON users.user_id = groups.user_id 
WHERE groups.group_id IN (1,2)



Можно ли сделать запрос без группировки, DISTINCT или вложенного запроса?

Спасибо!
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201163
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gorden,

А где вложенный запрос?..
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201167
Gorden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT user_id, user_name 
FROM users 
WHERE user_id IN (
   SELECT DISTINCT user_id 
   FROM groups 
   WHERE group_id IN (1,2)
)



или

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT user_id, user_name 
FROM users 
WHERE user_id IN (
   SELECT user_id 
   FROM groups 
   WHERE group_id IN (1,2) 
   GROUP BY user_id
)
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201170
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так первый запрос вроде то что нужно. Сначала выборку по группам делай а потом джойни пользователей. И никакой группировки.
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201171
Gorden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой БобрНу так первый запрос вроде то что нужно. Сначала выборку по группам делай а потом джойни пользователей. И никакой группировки.

Прошу прощения, не совсем понял. можно пример без группировки и влож. запроса?
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201172
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gorden
Можно ли сделать запрос без группировки, DISTINCT или вложенного запроса?

Можно (но непонятно зачем)

Например
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT users.user_id, users.user_name 
FROM users
JOIN groups ON users.user_id = groups.user_id 
WHERE groups.group_id IN (1)
UNION
SELECT users.user_id, users.user_name 
FROM users
JOIN groups ON users.user_id = groups.user_id 
WHERE groups.group_id IN (2)
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201173
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрНу так первый запрос вроде то что нужно

ага... только нужно выкинуть GROUP и подправить схему БД...

Код: sql
1.
2.
3.
SELECT users.user_id, users.user_name
FROM users INNER JOIN user_group ON users.user_id = user_group.user_id
WHERE (((user_group.group_id)=1 Or (user_group.group_id)=2));



при условии что в user_group ключ составной, GROUP в запросе будет как пятое колесо...
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201177
Gorden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,

В вашем случае запрос вернет одного и того-же user-a столько раз, сколько у него групп. А мне нужно узнать принадлежит пользователь к одной или нескольким группам и вывести его (одной строкой) в результате запроса. Вот я и спрашиваю можно без группировки, distinct или вложенного запроса решить вопрос.
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201219
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gorden,

ну да... есть такое дело, тогда писать функцию, определяющую выводить юзера или нет:
Код: sql
1.
SELECT users.user_id, users.user_name FROM users WHERE (((func1([user_id]))=1));



Если функция получает user_id и возвращает ноль - юзера не выводим (он не входит ни в группу 1 ни в группу 2)
формально сделано

Gordenбез группировки, distinct или вложенного запроса
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201221
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GordenВот я и спрашиваю можно без группировки, distinct или вложенного запроса решить вопрос.
Нельзя, обломись.
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39201801
welter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gorden,
можно , например, используя оконную ф-цию row_number(), но зачем?
...
Рейтинг: 0 / 0
Как сделать запрос без группировки или вложенного запроса?
    #39204654
Вадиман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GordenЗлой Бобр,

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT user_id, user_name 
FROM users 
WHERE user_id IN (
   SELECT DISTINCT user_id 
   FROM groups 
   WHERE group_id IN (1,2)
)



или

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT user_id, user_name 
FROM users 
WHERE user_id IN (
   SELECT user_id 
   FROM groups 
   WHERE group_id IN (1,2) 
   GROUP BY user_id
)


Что это за
Код: sql
1.
... IN (SELECT DISTINCT ...

?

На подумать, что выберет запрос:
Код: sql
1.
WHERE x IN (1, 2, 2, 2, 3)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как сделать запрос без группировки или вложенного запроса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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