나는 테이블 person
과 courses_by_instructors
. SQL 쿼리를 실행하고 있지만 원하는 결과에 대해 중복 값을 얻고 있습니다. 나는 현재 가르치는 person
모든 사람들 을 테이블 에서 가져오고 있습니다 . 쿼리 또는 테이블과 관련하여 어떤 제안을 할 수 있습니까? SQLFIDDLEinstructor_roles = 1
course
SELECT p.person_id, p.person_name, p.instructor_role, IFNULL(lj.company_id, 0) as company_id, lj.person_id, lj.course_name
FROM person as p
LEFT JOIN courses_by_instructors as lj
ON (lj.person_id = p.person_id AND lj.company_id = 7 )
WHERE instructor_role = 1
ORDER BY person_name
원하는 결과 :
+-----------+-----------------+-------------+------------+
| person_id | instructor_name | course_name | company_id |
+-----------+-----------------+-------------+------------+
| 154 | James Newton | | |
| 154 | James Newton | | |
| 478 | Tina Turner | | |
| 258 | James Fuller | | |
| 717 | Michael Jordan | Shoe Biz | 7 |
| 717 | Michael Jordan | Basketball | 7 |
| 964 | Steve Johnson | | |
+-----------+-----------------+-------------+------------+
흐름:
+-----------+-----------------+-------------+------------+
| person_id | instructor_name | course_name | company_id |
+-----------+-----------------+-------------+------------+
| 154 | James Newton | | |
| 154 | James Newton | | |
| 478 | Tina Turner | | |
| 258 | James Fuller | | |
| 717 | Michael Jordan | Shoe Biz | 7 |
| 717 | Michael Jordan | Basketball | 7 |
| 717 | Michael Jordan | Shoe Biz | 7 |
| 717 | Michael Jordan | Basketball | 7 |
| 964 | Steve Johnson | | |
+-----------+-----------------+-------------+------------+
이 시도:
SELECT p.person_id, p.person_name, p.instructor_role, IFNULL(lj.company_id, 0) as company_id, lj.person_id, lj.course_name
FROM person as p
LEFT JOIN courses_by_instructors as lj
ON (lj.person_id = p.person_id AND lj.company_id = 7 )
WHERE instructor_role = 1
GROUP BY p.person_id,lj.course_name
ORDER BY person_name
필요한 것을 제공합니다.
SQL Fiddle 에서 출력보기
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다