Сведения о вопросе

Sadijon

14:36, 13th August, 2020

Теги

Выборка записей из базы по списку меток, заданных в другой таблице?

Просмотров: 370   Ответов: 3

В MySQL есть таблица с записями, так же в отдельной таблице лежат «id записи» — «id тега», которые обозначают, какие теги имеет обозначенная запись.

Необходимо выбрать записи по заданным пользователем тегам. При этом тегов в запросе может быть несколько и в таком случае выбираются все записи, содержащие хотя бы один из перечисленных в запросе тегов.


Вариант, при котором для каждой метки создается отдельное поле в таблице записи не подходит, т.к. при необходимости требуется добавить новую метку без изменений в коде sql-запроса.


Подскажите, каким sql-запросом сделать такую выборку?



  Сведения об ответе

JUST___

23:44, 24th August, 2020

select Запись from ТаблицаСзаписями where idЗаписи in (select idЗаписи from ТаблицаСТегами where idТега = 'нужный тэг')


  Сведения об ответе

Chhiki

00:56, 4th August, 2020

SELECT r.*
    FROM Records r
    INNER JOIN Record_Tag rt ON rt.record_id = r.id
    INNER JOIN Tag t ON t.id = rt.tag_id
    WHERE t.name IN ('tag1','tag2','tag3,...,'tagN')


Выберет все записи (не уникальные) по тегам, для того чтобы выьрать уникальные нужно добавить DISTINCT, или группировку, смотря как вы собираетесь использовать эти данные.


  Сведения об ответе

JUST___

13:11, 15th August, 2020

Ты хочешь чтобы в итоговой таблице каждый тег был отдельным полем? Или отдельной записью?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться