![]() |
|
Модераторы: skyboy |
![]()
|
|
| the_buddha |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 14.9.2007 Репутация: нет Всего: нет |
Всем привет, на собеседовании мне дали решить один как мне кажется жесткий задач.
У нас есть таблица t1(user_id, group_id) я конечно объясню что это за таблица, но если чесно это все не важно, важно сделать выборку именно по ней, по идее есть таблиц юзер и есть таблица группа, и наша таблица t1 для отношения многие ко многим Так вот надо выбрать из нашей таблицы t1 все group_id у которых user_id равно 1, 2 (к примеру, это же у нас внеш ключи к таблице юзер) причем равно одновременно пример с данными нашей таблички user_id , group_id 1 1 2 1 1 2 2 3 Вот нужно составить запрос, которые вернет один резульат group_id равный 1, так как тока у него в нашей табле, оба резалта по юзер айди есть. Да, кстати мне еще сказали что данная задача решается, аж тремя возможными вариантами. Гуру ПОМОГИТЕ. |
|||
|
||||
| the_buddha |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 14.9.2007 Репутация: нет Всего: нет |
Один из вариантов я допер, но сказали что их 3
вот мой первый вариант SELECT group_id FROM t1 WHERE group_id IN (SELECT group_id FROM a_usergroup WHERE user_id = 1) AND user_id = 2; |
|||
|
||||
| Gluttton |
|
||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Пока они не подошли выскажу свое мнение:
Ничего не проверял на сервере, поэтому могут быть ошибки, но идея, я думаю, просатривается. -------------------- Слава Україні! |
||||||
|
|||||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 2 Всего: 54 |
может я что то не понял, но зачем подзапросы?
Это сообщение отредактировал(а) Frees - 6.10.2010, 07:19 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| Deniz |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 6 Всего: 44 |
Gluttton, первый запрос наверно можно упростить:
Вот еще один вариант (вроде похоже на правду):
Добавлено через 6 минут и 49 секунд Gluttton, второй запрос неправильный, правильнее так:
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Это при условии, что нет дублирования записей и что вывести надо и запись о группе, в которой кроме юзеров 1 и 2, могут присутствовать и другие юзеры. Если нет - следует дополнительно группировать по t1.group_id и проверять count(t1.group_id)=1. Добавлено через 2 минуты и 17 секунд PS. В данном конкретном случае можно проверки tN.group_id поместить не в условии связывания, а в условии отбора - разницы никакой. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |