Соединить одно и то же поле несколько раз в таблице - PullRequest
0 голосов

У меня есть эти 2 таблицы, и я пытаюсь объединить их несколько раз, но не удалось.Ниже приведены таблицы.

Таблица ccaSubjects:

+------------+----------+
| 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.

Мой БД в phpmyadmin.

Кто-нибудь может мне помочь, как это сделать?

1 Ответ

0 голосов
/ 31 мая 2018

Вы можете присоединять таблицу rispEnrollment к таблице ccaSubjects столько раз, сколько вам нужно.В этом случае вы можете присоединиться три раза, чтобы ввести столбцы цен для каждого из трех столбцов темы.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...