Я искал решение для этой проблемы, но не нашел его (пока), вероятно, потому, что сам не знаю, как правильно это объяснить.Если оно уже где-то опубликовано, пожалуйста, дайте мне знать.
У меня есть три базы данных, которые связаны друг с другом;основной, штук и групп.По сути, основная база данных содержит наиболее элементарную / наиболее используемую информацию из поста, а база данных о материалах содержит данные, связанные с этим постом.База данных групп содержит все (длинные) имена групп, в которых можно «разместить» сообщение в основной базе данных.Сообщение может быть опубликовано в нескольких группах одновременно.Когда новое сообщение добавляется на мой сайт, я проверяю фрагменты, чтобы увидеть, есть ли дубликаты (проверьте, было ли уже опубликовано сообщение).Чтобы сделать поиск дубликатов более эффективным, я проверяю только те фрагменты, которые размещены в одной и той же группе.
Надеюсь, вы все еще со мной, потому что здесь это начинает сбивать с толкуЯ думаю (дайте мне знать, если мне нужно более четко указать вещи): сейчас и основная база данных, и база данных частей содержат полное имя группы (групп) (в основном я вообще не использую базу данных групп).То, что я хочу сделать, это заменить имена этих групп их связанными идентификаторами из базы данных групп.Например, я хочу изменить это:
из:
MAIN_table:
id |group_posted_in-------- | ---------------------------1 |группа_1, группа_52 |группа_15, группа_753 |группа_1, группа_215
GROUPS_table:
id |имя группы-------- | ---------------------------1 |группа 12 |group_23 |group_3так далее... в MAIN_table:
id |group_posted_in-------- | ---------------------------1 |1,52 |15,753 |1215Или что-то похожее на это.Однако этот формат вызывает определенные проблемы, так как следующий запрос вернет все строки (из примера), а не только ту, которая мне нужна:
SELECT * FROM main_table WHERE group = '5'
Мне нужно либо изменить запрос на что-то вродеthis:
...WHERE group = '5' OR group = '5,%' OR group = '%,5,%' OR group = '%,5'
Или мне нужно изменить структуру базы данных с разделенных запятыми значений на что-то вроде этого: [15] [75].Сопутствующий запрос будет проще, но мне кажется, что это громоздкое решение.Кроме того, (простые) объединения не будут легкими / невозможными вообще.Мне всегда нужно будет выполнить отдельный запрос для извлечения названий групп - ищет ли пользователь сообщения в определенной группе (в этом случае мне сначала нужно выполнить запрос, чтобы получить идентификаторы, а затем искатьсвязанные сообщения), или для их отображения (сначала сообщения, затем другой запрос для сопоставления групп).
Итак, в заключение: я полагаю, я знаю, что есть решение этой проблемы, номоя интуиция говорит мне, что это не правильный / лучший способ сделать это.Итак, я полагаю, что вопрос, который связывает этот пост:
Как правильно подключить базу данных группы к остальным?