У меня есть БД, которая выглядит примерно так:
Table `person_dir`:
int person_ID
varchar firstname
varchar lastname
enum division
Table `prod_staff`:
int prod_ID
int staff_ID
int role_ID
Table `prod_cast`:
int prod_ID
int cast_ID
varchar role_name
Я пытаюсь собрать 10 лучших людей в данном подразделении, основываясь на количестве произведений, в которых они участвовали.в качестве сотрудника или актера.Человек может выступать в роли как персонала, так и актеров в данном производстве, поэтому получение двух COUNT не даст точного числа.
У меня такой запрос выглядит так:
SELECT pers_ID, firstname, lastname,
COUNT(DISTINCT prod_ID) FROM (
(SELECT prod_ID
FROM prod_staff
WHERE staff_ID = person_dir.person_ID)
UNION
(SELECT prod_ID
FROM prod_cast
WHERE cast_ID = person_dir.person_ID)
) AS maxnum
FROM person_dir
WHERE division = 'north'
ORDER BY maxnum DESC
LIMIT 10
Когда я пытаюсь запустить его, я получаю сообщение о том, что в строке «FROM person_dir» есть синтаксическая ошибка.Запуск COUNT в запросе сам по себе работает, поэтому я должен встраивать его неправильно.Любая помощь в обнаружении ошибки будет принята с благодарностью.