-1

2 つの mysql データベースがあります。(1) authorID、authorFirst、authorLast。(2) courseID、courseName、courseAuthor1、courseAuthor2、courseAuthor3、courseAuthor4。著者データベースの 2 つの列を、コース データベースの courseAuthor 列の 1 つまたは 4 つすべてに結合する方法は?

著者

authorID | authorFirst | authorLast
1        |   firstA    |   lastA   
2        |   firstB    |   lastB 
3        |   firstC    |   lastC 
4        |   firstD    |   lastC 

コース

courseID | courseName | courseAuthor1 | courseAuthor2 | courseAuthor3 | courseAuthor4
1        | course1    |      2        |     3         |    NULL       |     NULL
2        | course 2   |      1        |     4         |     3         |     NULL
3        | course 33  |      4        |     1         |     2         |     NULL
4        | course 4   |      3        |    NULL       |    NULL       |     NULL

結果を次のようにしたい:

courseID | courseName | courseAuthor1 | courseAuthor2 | courseAuthor3 | courseAuthor4
1        | course1    | firstB LastB  | firstC LastC  |     NULL      |     NULL
2        | course 2   | firstA LastA  | firstD LastD  | firstC LastC  |     NULL
3        | course 33  | firstD LastD  | firstA LastA  | firstB LastB  |     NULL
4        | course 4   | firstC LastC  |    NULL       |    NULL       |     NULL

どこから始めればよいかさえわかりません。これが私のコードです:

SELECT * FROM コース JOIN 著者 ON 著者.著者 ID IN (courses.courseAuthor1, course.courseAuthor2, course.courseAuthor3, course.courseAuthor4)

これは次を示しています。

results  |  courseID | courseName | courseAuthor1 | courseAuthor2 | courseAuthor3 | courseAuthor4  |  authorID  |  authorFirst  |  authorLast
1        |    1      | course1    |      2        |     3         |    NULL       |     NULL       |      2     |     firstB    |  lastB
2        |    1      | course1    |      2        |     3         |    NULL       |     NULL       |      3     |     firstC    |  lastC
3        |    2      | course 2   |      1        |     4         |     3         |     NULL       |      1     |     firstA    |  lastA
4        |    2      | course 2   |      1        |     4         |     3         |     NULL       |      4     |     firstD    |  lastD
5        |    2      | course 2   |      1        |     4         |     3         |     NULL       |      3     |     firstC    |  lastC
6        |    3      | course 33  |      4        |     1         |     2         |     NULL       |      4     |     firstD    |  lastD
7        |    3      | course 33  |      4        |     1         |     2         |     NULL       |      1     |     firstA    |  lastA
8        |    3      | course 33  |      4        |     1         |     2         |     NULL       |      2     |     firstB    |  lastB
9        |    4      | course 4   |      3        |    NULL       |    NULL       |     NULL       |      3     |     firstC    |  lastC

本当にありがとう!

4

1 に答える 1

0

少し時間がかかりましたが、私の質問に答えました。ここにあります:

SELECT c1.courseID, c1.courseName, 
CONCAT(a1.authorFirst,' ',a1.authorLast) AS aOne, 
CONCAT(a2.authorFirst,' ',a2.authorLast) AS aTwo, 
CONCAT(a3.authorFirst,' ',a3.authorLast) AS aThree, 
CONCAT(a4.authorFirst,' ',a4.authorLast) AS aFour 
FROM courses c1 
LEFT JOIN authors a1 ON c1.courseAuthor1 = a1.authorID 
LEFT JOIN authors a2 ON c1.courseAuthor2 = a2.authorID 
LEFT JOIN authors a3 ON c1.courseAuthor3 = a3.authorID 
LEFT JOIN authors a4 ON c1.courseAuthor4 = a4.authorID
于 2013-04-15T14:41:56.397 に答える