在表中多次连接同一字段

vuv7lop3  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(311)

我有这两个表,我试图加入他们两个多次,但失败了。下面是表格。
表1受试者:

+------------+----------+
| ccaSubject | ccaPrice |
+------------+----------+
| Chess      |      100 |
| Badminton  |      300 |
| Dancing    |      200 |
| Singing    |      200 |
| Football   |      250 |
| Fitness    |      600 |
| Robotics   |     1000 |
+------------+----------+

表rispenrollment

+--------------------+-----------+-----------+----------+
| studentIdentifier  | firstCCA  | secondCCA | thirdCCA |
+--------------------+-----------+-----------+----------+
| elly@example.com   | Robotics  | Singing   | Dancing  |
| mike@example.com   | Chess     | Singing   | Robotics |
| tom@example.com    | Badminton | Dancing   | Chess    |
| peter@example.com  | Football  | Fitness   | Robotics |
| andrew@example.com | Robotics  | Singing   | Chess    |
+--------------------+-----------+-----------+----------+

我希望我的输出是这样的:

+--------------------+-----------+-----------+----------+-----------+-----------+-----------+
| studentIdentifier  | firstCCA  | secondCCA | thirdCCA | CCA1price | CCA2price | CCA3price |
+--------------------+-----------+-----------+----------+-----------+-----------+-----------+
| elly@example.com   | Robotics  | Singing   | Dancing  |      1000 |       200 |       200 |
| mike@example.com   | Chess     | Singing   | Robotics |       100 |       200 |      1000 |
| tom@example.com    | Badminton | Dancing   | Chess    |       300 |       200 |       100 |
| peter@example.com  | Football  | Fitness   | Robotics |       250 |       600 |      1000 |
| andrew@example.com | Robotics  | Singing   | Chess    |      1000 |       200 |       100 |
+--------------------+-----------+-----------+----------+-----------+-----------+-----------+

从我的代码中,我只能使用一次内部连接并获得 CCA1price ,我无法得到 cca2price 以及 cca3price 因为错误一直在说 Same aliases .

tnkciper

tnkciper1#

你可以加入 rispEnrollment 餐桌 ccaSubjects 你需要多少次就坐多少次。在这种情况下,您可以加入三次,以便为三个主题列中的每一列引入price列。

SELECT
    t1.studentIdentifier,
    t1.firstCCA,
    t1.secondCCA,
    t1.thirdCCA,
    t2.ccaPrice AS CCA1price,
    t3.ccaPrice AS CCA2price,
    t4.ccaPrice AS CCA3price
FROM rispEnrollment t1
LEFT JOIN ccaSubjects t2
    ON t1.firstCCA = t2.ccaSubject
LEFT JOIN ccaSubjects t3
    ON t1.secondCCA = t3.ccaSubject
LEFT JOIN ccaSubjects t4
    ON t1.thirdCCA = t4.ccaSubject;

注意,我在这里使用左连接,以防 rispEnrollment 表的主题可能与表中的任何内容都不匹配 ccaSubjects table。

相关问题