Представления MySQL не могут иметь подзапрос в from и не поддерживают порядок. Как я могу создать представление из этого запроса? - PullRequest
0 голосов
/ 29 июня 2011

Я пытаюсь получить набор результатов с текущим названием каждого сотрудника.Я хотел бы создать представление из этого для дальнейшего использования, но я нахожу, что я в замешательстве, и, вероятно, пропускаю простое решение.Вот вопрос, о котором идет речь, и заранее спасибо!

select * from 
(SELECT
appointment.employee_id,
title.`name` as title_name
FROM
appointment
INNER JOIN appointment_title ON appointment.id = appointment_title.appointment_id
INNER JOIN title ON appointment_title.title_id = title.id
order by appointment_title.effective_date DESC) tmp group by employee_id

Ответы [ 2 ]

0 голосов
/ 19 января 2013

Другой вариант - разбить запрос на два представления.Первое представление будет содержать подзапрос производной таблицы, а второе просто выберет один из них:

CREATE VIEW vwEmployee_Inner AS
SELECT
appointment.employee_id,
title.`name` as title_name
FROM
appointment
INNER JOIN appointment_title ON appointment.id = appointment_title.appointment_id
INNER JOIN title ON appointment_title.title_id = title.id
order by appointment_title.effective_date DESC

И тогда ваш исходный вид станет:

CREATE VIEW vwEmployee AS
SELECT * FROM vwEmployee_Inner GROUP BY employee_id
0 голосов
/ 29 июня 2011

Обновлено:

SELECT
    appointment.employee_id ,
    ( SELECT title.`name`
      FROM appointment_title
        INNER JOIN title
          ON appointment_title.title_id = title.id
      WHERE appointment.id = appointment_title.appointment_id
      ORDER BY appointment_title.effective_date DESC
      LIMIT 1
    ) AS title_name
FROM appointment
GROUP BY appointment.employee_id
...