Создание запроса к many-to-many
Итак вопрос: как сделать выборку(select) людей, например, учителей-любителей мороженного. То есть ИД чела одинаковый а ИДы категорий определенные (то есть пересечение категорий).
Есть вариант с вложенными запросами (сначала ищем всех учителей, а потом в учителях любителей мороженного), но категорий много - уровень вложеннгости может быть очень велик -> скорость и ограничения на уровень вложенности.
Есть ли другие варианты?
Цитата:
Originally posted by Gudvin
еУФШ ДЧЕ ФБВМЙГЩ: ДБООЩЕ(ОБРТ МАДЙ) Й ЛБФЕЗПТЙС(ОБРТ "ХЮЙФЕМШ", "МАВЙФ НПТПЦЕООПЕ"). лБЦДЩЕ ДБООЩЕ НПЗХФ ВЩФШ ОЕУЛПМШЛЙИ ЛБФЕЗПТЙК ПДОПЧТЕНЕООП (ФП ЕУФШ ЛБФЕЗПТЙЙ НПЗХФ РЕТЕУЕЛБФШУС - Й ХЮЙФЕМШ Й МАВЙФ НПТПЦЕООПЕ). пТЗБОЙЪПЧБОБ РТПНЕЦХФПЮОБС ФБВМЙГБ ДМС УЧЕДЕОЙС ДБООЩИ Й ЛБФЕЗПТЙК (УФБОДБТФОБС ТБЪЧСЪЛБ ПФОПЫЕОЙС many-to-many) У ДЧХНС РПМСНЙ: йд ЮЕМБ Й йд ЛБФЕЗПТЙЙ.
йФБЛ ЧПРТПУ: ЛБЛ УДЕМБФШ ЧЩВПТЛХ(select) МАДЕК, ОБРТЙНЕТ, ХЮЙФЕМЕК-МАВЙФЕМЕК НПТПЦЕООПЗП. фП ЕУФШ йд ЮЕМБ ПДЙОБЛПЧЩК Б йдЩ ЛБФЕЗПТЙК ПРТЕДЕМЕООЩЕ (ФП ЕУФШ РЕТЕУЕЮЕОЙЕ ЛБФЕЗПТЙК).
еУФШ ЧБТЙБОФ У ЧМПЦЕООЩНЙ ЪБРТПУБНЙ (УОБЮБМБ ЙЭЕН ЧУЕИ ХЮЙФЕМЕК, Б РПФПН Ч ХЮЙФЕМСИ МАВЙФЕМЕК НПТПЦЕООПЗП), ОП ЛБФЕЗПТЙК НОПЗП - ХТПЧЕОШ ЧМПЦЕООЗПУФЙ НПЦЕФ ВЩФШ ПЮЕОШ ЧЕМЙЛ -> УЛПТПУФШ Й ПЗТБОЙЮЕОЙС ОБ ХТПЧЕОШ ЧМПЦЕООПУФЙ.
еУФШ МЙ ДТХЗЙЕ ЧБТЙБОФЩ?
еУФШ ДЧЕ ФБВМЙГЩ: ДБООЩЕ(ОБРТ МАДЙ) Й ЛБФЕЗПТЙС(ОБРТ "ХЮЙФЕМШ", "МАВЙФ НПТПЦЕООПЕ"). лБЦДЩЕ ДБООЩЕ НПЗХФ ВЩФШ ОЕУЛПМШЛЙИ ЛБФЕЗПТЙК ПДОПЧТЕНЕООП (ФП ЕУФШ ЛБФЕЗПТЙЙ НПЗХФ РЕТЕУЕЛБФШУС - Й ХЮЙФЕМШ Й МАВЙФ НПТПЦЕООПЕ). пТЗБОЙЪПЧБОБ РТПНЕЦХФПЮОБС ФБВМЙГБ ДМС УЧЕДЕОЙС ДБООЩИ Й ЛБФЕЗПТЙК (УФБОДБТФОБС ТБЪЧСЪЛБ ПФОПЫЕОЙС many-to-many) У ДЧХНС РПМСНЙ: йд ЮЕМБ Й йд ЛБФЕЗПТЙЙ.
йФБЛ ЧПРТПУ: ЛБЛ УДЕМБФШ ЧЩВПТЛХ(select) МАДЕК, ОБРТЙНЕТ, ХЮЙФЕМЕК-МАВЙФЕМЕК НПТПЦЕООПЗП. фП ЕУФШ йд ЮЕМБ ПДЙОБЛПЧЩК Б йдЩ ЛБФЕЗПТЙК ПРТЕДЕМЕООЩЕ (ФП ЕУФШ РЕТЕУЕЮЕОЙЕ ЛБФЕЗПТЙК).
еУФШ ЧБТЙБОФ У ЧМПЦЕООЩНЙ ЪБРТПУБНЙ (УОБЮБМБ ЙЭЕН ЧУЕИ ХЮЙФЕМЕК, Б РПФПН Ч ХЮЙФЕМСИ МАВЙФЕМЕК НПТПЦЕООПЗП), ОП ЛБФЕЗПТЙК НОПЗП - ХТПЧЕОШ ЧМПЦЕООЗПУФЙ НПЦЕФ ВЩФШ ПЮЕОШ ЧЕМЙЛ -> УЛПТПУФШ Й ПЗТБОЙЮЕОЙС ОБ ХТПЧЕОШ ЧМПЦЕООПУФЙ.
еУФШ МЙ ДТХЗЙЕ ЧБТЙБОФЩ?
б ФБЛПЕ РПДПКДЕФ
select *
from table
where id_chel=:id and id_kat in(:id1,:id2,:id3)
Цитата:
Originally posted by john
select *
from table
where id_chel=:id and id_kat in(:id1,:id2,:id3)
select *
from table
where id_chel=:id and id_kat in(:id1,:id2,:id3)
Необходимо, что бы один id_chel был одновременно с :id1 и :id2. Но я уже придумал, как это сделать через аlias'ы.
Но все равно спасибо.