Я работаю над небольшим проектом, который включает в себя захват списка контактов, которые хранятся для каждой группы. По существу, база данных настроена таким образом, чтобы каждая группа имела первичный и вторичный контакты, которые были сохранены, как неудивительно, Group.Primary и Group. Secondary. Цель состоит в том, чтобы вытащить каждый первичный и вторичный контакт для каждой группы и отобразить их в сортируемой таблице.MySQL Query Where Column Like Column
У меня есть сортируемый стол, все получилось, но я столкнулся с небольшой проблемой. Каждое первичное и вторичное поле может содержать более одного контакта, разделенных запятой. Например, если Primary содержал 123,256, то ему необходимо будет тянуть как контакты с идентификаторами 123 и 256. Я намеревался использовать запрос, отформатированный как это:
SELECT *
FROM Group G,
Contacts C
WHERE G.Primary LIKE %C.ID%
OR G.Secondary LIKE %C.ID%
, так что я мог бы просто пропустить запятую часть, но Кажется, я не могу найти рабочий запрос.
Мой вопрос к вам: я просто что-то пропустил? Есть ли простой запрос, который позволил бы мне это сделать? Или мне лучше получить группы и контакты по отдельности, и объединить их позже. Я думаю, что первое немного легче понять при чтении, что является плюсом, поскольку это общий проект, но если это невозможно, я сделаю последнее.
Этот код упрощен, но он имеет точку пересечения.
У вас в вашей базе данных есть отношения «один ко многим». Одна группа имеет один или несколько связанных контактов. Большинство людей решают эту проблему, добавляя дополнительную таблицу, содержащую комбинации groupid и контакт id. Таким образом, вы можете использовать обычное соединение, чтобы получить все контакты, ассоциированные с группой. Дополнительным преимуществом является то, что он намного быстрее, чем «разобрать» строку с значениями, разделенными запятыми, каждый раз. – Gerben
К сожалению, это устаревшая база данных, и слишком много систем полагаются на нее, чтобы изменить структуру, поэтому она должна оставаться такой, какая есть. Я попробую решения здесь, посмотрю, что я могу сделать. – shmeeps