@danys_kun

Как сравнить два поля VARCHAR и INT?

Возможно я задаю очень глупый вопрос, но как сравнить правильно два поля в разных таблицах?
Есть первая таблица с новостями, у каждой новости есть поле с типом VARCHAR и значением на пример 1,13,14, а есть вторая таблица с категориями(название, ID и др.).
Вопрос в том, как мне сравнить ID из второй таблицы с полем VARCHAR из первой?
  • Вопрос задан
  • 391 просмотр
Решения вопроса 1
@alexalexes
Как выглядит ваша проблема:
Таблица новостей:
ID, CATEGORIES
1, '1,13,14'

Как нужно реализовать:
Добавить еще таблицу Categories_Of_News
ID, NEWS_ID, CATEGORY_ID
1, 1, 1
2, 1, 13
3, 1, 14

Тогда запросы не будут содержать никаких костылей с парсингом строк и у вас будут работать индексы (если их создать).
Например, получить все категории, в которые входит новость :news_id
select  C.Id
from News N
join Categories_Of_News CoN on CoN.News_Id = N.Id
join Category C on C.Id = CoN.Category_Id 
where N.Id = :news_id

PS: Смотрите, как реализовать связь "многим-ко-многим".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы