Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание запроса к many-to-many

495
28 октября 2002 года
Gudvin
17 / / 20.02.2000
Есть две таблицы: данные(напр люди) и категория(напр "учитель", "любит мороженное"). Каждые данные могут быть нескольких категорий одновременно (то есть категории могут пересекаться - и учитель и любит мороженное). Организована промежуточная таблица для сведения данных и категорий (стандартная развязка отношения many-to-many) с двумя полями: ИД чела и ИД категории.

Итак вопрос: как сделать выборку(select) людей, например, учителей-любителей мороженного. То есть ИД чела одинаковый а ИДы категорий определенные (то есть пересечение категорий).

Есть вариант с вложенными запросами (сначала ищем всех учителей, а потом в учителях любителей мороженного), но категорий много - уровень вложеннгости может быть очень велик -> скорость и ограничения на уровень вложенности.

Есть ли другие варианты?
2.5K
29 октября 2002 года
john
6 / / 29.10.2002
Цитата:
Originally posted by Gudvin
еУФШ ДЧЕ ФБВМЙГЩ: ДБООЩЕ(ОБРТ МАДЙ) Й ЛБФЕЗПТЙС(ОБРТ "ХЮЙФЕМШ", "МАВЙФ НПТПЦЕООПЕ"). лБЦДЩЕ ДБООЩЕ НПЗХФ ВЩФШ ОЕУЛПМШЛЙИ ЛБФЕЗПТЙК ПДОПЧТЕНЕООП (ФП ЕУФШ ЛБФЕЗПТЙЙ НПЗХФ РЕТЕУЕЛБФШУС - Й ХЮЙФЕМШ Й МАВЙФ НПТПЦЕООПЕ). пТЗБОЙЪПЧБОБ РТПНЕЦХФПЮОБС ФБВМЙГБ ДМС УЧЕДЕОЙС ДБООЩИ Й ЛБФЕЗПТЙК (УФБОДБТФОБС ТБЪЧСЪЛБ ПФОПЫЕОЙС many-to-many) У ДЧХНС РПМСНЙ: йд ЮЕМБ Й йд ЛБФЕЗПТЙЙ.

йФБЛ ЧПРТПУ: ЛБЛ УДЕМБФШ ЧЩВПТЛХ(select) МАДЕК, ОБРТЙНЕТ, ХЮЙФЕМЕК-МАВЙФЕМЕК НПТПЦЕООПЗП. фП ЕУФШ йд ЮЕМБ ПДЙОБЛПЧЩК Б йдЩ ЛБФЕЗПТЙК ПРТЕДЕМЕООЩЕ (ФП ЕУФШ РЕТЕУЕЮЕОЙЕ ЛБФЕЗПТЙК).

еУФШ ЧБТЙБОФ У ЧМПЦЕООЩНЙ ЪБРТПУБНЙ (УОБЮБМБ ЙЭЕН ЧУЕИ ХЮЙФЕМЕК, Б РПФПН Ч ХЮЙФЕМСИ МАВЙФЕМЕК НПТПЦЕООПЗП), ОП ЛБФЕЗПТЙК НОПЗП - ХТПЧЕОШ ЧМПЦЕООЗПУФЙ НПЦЕФ ВЩФШ ПЮЕОШ ЧЕМЙЛ -> УЛПТПУФШ Й ПЗТБОЙЮЕОЙС ОБ ХТПЧЕОШ ЧМПЦЕООПУФЙ.

еУФШ МЙ ДТХЗЙЕ ЧБТЙБОФЩ?




б ФБЛПЕ РПДПКДЕФ
select *
from table
where id_chel=:id and id_kat in(:id1,:id2,:id3)

495
29 октября 2002 года
Gudvin
17 / / 20.02.2000
Цитата:
Originally posted by john
select *
from table
where id_chel=:id and id_kat in(:id1,:id2,:id3)


Необходимо, что бы один id_chel был одновременно с :id1 и :id2. Но я уже придумал, как это сделать через аlias'ы.

Но все равно спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог