[SQL] 하나 개의 셀에 여러 값의 SQL 쿼리
SQL하나 개의 셀에 여러 값의 SQL 쿼리
하나 개의 셀에있는 모든 값을 가진 테이블 (코스 관심사)이 있습니다. 하지만 그 값은 IDS하고 나는 그들의 이름을 알 수 있도록 나는 다른 테이블 (코스)로 가입 할 수 있습니다.
코스 관심사 :
MemberID MemberName CoursesInterested
-------------- --------------------- --------------
1 Al 1,4,5,6
2 A2 3,5,6
코스 테이블 :
CourseId Course
-------------- ---------------------
1 MBA
2 Languages
3 English
4 French
5 Fashion
6 IT
원하는 출력 :
MemberID MemberName CoursesInterested
-------------- --------------------- --------------
1 Al MBA,French,Fashion,IT
2 A2 English,Fashion,IT
나는 내가 원하는 출력을 추출하는 데 도움이 될 수 있습니다 MySQL의에서 SQL 쿼리를 수행하고 싶습니다. 나는 (하나 개의 셀에 값을 가입) 반대의 방법으로 작업을 수행하는 방법을 알고,하지만 난 다른 테이블에 상호 조인 ID를 분리 할 수있는 방법을 모색에 어려움을 겪고했습니다.
나는 지역 사회에서 어떤 도움을 주셔서 감사합니다. 감사
해결법
-
==============================
1.FIND_IN_SET 사용은 쉼표로 구분 된 목록에서 무언가를 검색 할 수 있습니다.
FIND_IN_SET 사용은 쉼표로 구분 된 목록에서 무언가를 검색 할 수 있습니다.
SELECT i.MemberID, i.MemberName, GROUP_CONCAT(c.Course) AS CoursesInterested FROM CourseInterests AS i JOIN Course AS c ON FIND_IN_SET(c.CourseId, i.CoursesInterested)
그러나, 대신 하나의 열에 과정을 저장하는 관계 테이블을 만드는 것이 더 효과적입니다. 이 유형의 조인은 큰 테이블에 대한 비용이 많이들 수 있도록, 인덱스를 사용하여 최적화 할 수 없습니다.
-
==============================
2.이 아웃을 시도해보십시오
이 아웃을 시도해보십시오
SELECT MemberID,MemberName,Group_Concat(C.Course) from ( SELECT MemberID,MemberName,SUBSTRING_INDEX(SUBSTRING_INDEX(t.CoursesInterested, ',', n.n), ',', -1) value FROM Table1 t CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ORDER BY n ) n WHERE n.n <= 1 + (LENGTH(t.CoursesInterested) - LENGTH(REPLACE(t.CoursesInterested, ',', ''))) ORDER BY MemberID,value ) T JOIN course C ON T.value = C.CourseId Group By MemberID,MemberName
바이올린 데모
산출:
MemberID MemberName CoursesInterested -------------- --------------------- -------------- 1 Al MBA,French,Fashion,IT 2 A2 English,Fashion,IT
from https://stackoverflow.com/questions/24241953/sql-query-of-multiple-values-in-one-cell by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL을로 가져 오기 SQL 파일 (0) | 2020.04.22 |
---|---|
[SQL] 데이터없이 MySQL을 수출 스키마 (0) | 2020.04.22 |
[SQL] 어떻게 BigQuery에서 피벗을 확장 할 수? (0) | 2020.04.22 |
[SQL] 어떻게 가입하여 다른 테이블에서 존재하지 않는 데이터를 찾는 방법은? (0) | 2020.04.22 |
[SQL] 어떻게 MS Access 쿼리에서 직접 시스템 사용자 이름을 사용 하는가? (0) | 2020.04.22 |