Mysql получает разные строки, поскольку одна строка отличается от столбца

Скажем, у меня есть следующие таблицы

Applications
- id
- studentid
- company_id
-status

Company
-company_id
-company_name

Student
-studentid
-studentname

Теперь скажем, что студент применил 3 компании.

Поэтому я хотел бы, чтобы результат отображался следующим образом. Результат будет только в одной строке.

Id | student name | company 1 | company 2 | company 3 

Могу ли я знать, как сделать, как выше. Мне удается выполнить несколько строк с помощью инструкции join. Но как сделать то, что я точно хочу.

+3
15 июн. '14 в 10:53
источник поделиться
1 ответ

Надеюсь, он работает,

  SELECT A.studentid, S.studentname,
        (  SELECT X1.company_id
             FROM (  SELECT @rownum := @rownum + 1 AS position, Q1.company_id
                       FROM Applications Q1 JOIN (SELECT @rownum := 0) R1
                      WHERE Q1.studentid = A.studentid
                      ORDER BY Q1.id) X1
            WHERE X1.position = 1) AS company_1,
        (  SELECT X2.company_id
             FROM (  SELECT @rownum := @rownum + 1 AS position, Q2.company_id
                       FROM Applications Q2 JOIN (SELECT @rownum := 0) R2
                      WHERE Q2.studentid = A.studentid
                      ORDER BY Q2.id) X2
            WHERE X2.position = 2) AS company_2,
        (  SELECT X3.company_id
             FROM (  SELECT @rownum := @rownum + 1 AS position, Q3.company_id
                       FROM Applications Q3 JOIN (SELECT @rownum := 0) R3
                      WHERE Q3.studentid = A.studentid
                      ORDER BY Q3.id) X3
            WHERE X3.position = 3) AS company_3
    FROM Applications AS A INNER JOIN Student S ON A.studentid = S.studentid
GROUP BY A.studentid, S.studentname
ORDER BY A.studentid, S.studentname

Ахмет Вехби Ольгач


Ахмет Вехби Ольгач

-1
06 июл. '14 в 14:55
источник

Посмотрите другие вопросы по меткам или Задайте вопрос