Запрос на выборку 1 строки в таблице и множества строк из другой таблицы, на которые есть ссылки в этой строке - PullRequest
0 голосов
/ 21 октября 2011

Итак, у меня есть 2 таблицы в моей базе данных, это «тренировки» и «упражнения». Тренировки содержат строку, называемую упражнениями, которая представляет собой разделенный запятыми список идентификаторов упражнений - из таблицы «упражнения», например. '1,2,3'.

У меня вопрос: могу ли я написать один запрос, чтобы я мог выбрать строку из таблицы тренировок, скажем, одну с идентификатором 1, и чтобы MySQL извлекал каждое из упражнений из списка в этой строке, возвращая их в строке «тренировки»?

В данный момент я использую PHP для выбора строки тренировки, а затем делаю отдельные запросы для каждого из упражнений, что приводит к серьезной неэффективности.

Я посмотрел на Объединение строк в виде массива из другой таблицы для каждой строки , а также провел некоторые исследования функции group_concat (), но я не уверен, что это то, что мне нужно.

Обновление Вот 2 таблицы: enter image description here

1 Ответ

0 голосов
/ 21 октября 2011

IMO, лучший подход - изменить схему, чтобы иметь таблицу перекрестных ссылок с именем exercises_workouts (или что-то подобное).Удалите поле CSV.

Вот страница, которая более подробно описывает реализацию отношения «многие ко многим»:

http://www.tonymarston.net/php-mysql/many-to-many.html

Примечание.mysql_ * функционирует, но общее объяснение подхода остается в силе.Возможно, вы захотите обратиться к PDO для доступа к базе данных.

...