2011-10-21 2 views
0

데이터베이스에 2 개의 테이블이 있으므로 '연습'과 '연습'입니다. 운동에는 '운동'표에서 운동 ID라는 쉼표로 구분 된 목록 인 운동이라는 행이 있습니다. '1,2,3'.테이블에서 1 행을 가져 오도록 쿼리하고 그 행에서 참조되는 다른 테이블에서 여러 행을 가져옵니다.

내 질문은 운동 표에서 행을 선택하고, ID가 1 인 행을 하나씩 허용하고, MySQL이 해당 행의 목록에서 연습 문제를 가져 오도록 허용 할 수 있습니까? '운동'행 안에 있습니까?

현재 운동 행을 선택하고 각각의 연습 문제에 대해 개별 요청을하면 심각한 비효율을 초래하는 PHP를 사용하고 있습니다.

나는 Joining rows as array from another table for each row을 살펴 보았고 group_concat() 함수에 대한 연구도했지만 그게 내가 뭘하는지 확신 할 수 없다. 여기

업데이트 은 2 개 테이블입니다 : IMO enter image description here

+1

스키마에 'exercises_workouts' (또는 이와 비슷한 항목)라는 상호 참조 테이블을 재 설계하십시오. CSV 필드를 버립니다. 그것은 당신이 해결하는 데 도움이되는 데이터베이스의 곡식에 반대합니다. – webbiedave

+0

'workoutid'와 'exerciceid'필드가 있고 테이블에서 이동하는 테이블이 있습니까? –

+0

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

답변

0

는 가장 좋은 방법은 상호 참조 테이블 exercises_workouts (또는 뭔가 유사한)라고해야하는 스키마를 재 설계하는 것입니다. CSV 필드를 제거하십시오.

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

참고 :

여기에 다 대다 관계를 구현에 대한 자세한 내용이수록되어 페이지의 링크 된 페이지는 mysql_로 * 기능을 사용하지만 접근 방식의 일반적인 설명은 의미합니다. 데이터베이스에 액세스하려면 PDO을 조사해야합니다.

+0

방금 ​​내 데이터베이스에 대한 ERD를 그렸고 내 이전 솔루션이 얼마나 어리 석 었는지 보여줍니다. :) –

관련 문제