реализация этого запроса - выдается ошибка "столбец неоднозначно определен". Я знаю, что это имена столбцов RE и их копии. Невозможно определить, что вызывает ошибку.

 SELECT case.case_id,
   case.client_id,
   case.description,
   case.date_filed,
   case.date_closed,
   solicitor.solicitor_id,
   solicitor.first_name,
   solicitor.surname,
   SUM(note.time_spent) total_time_spent
FROM note, case
INNER JOIN note
ON note.case_id = case.case_id
INNER JOIN solicitor
ON solicitor.solicitor_id = note.solicitor_id
GROUP BY note.case_id,
     note.solicitor_id,
     case.client_id,
     case.description,
     case.date_filed,
     case.date_closed
ORDER BY note.case_id,
     case.date_filed;

rhys_stubbs

Ответов: 3

Ответы (3)

Похоже, настоящая ошибка заключается в том, что вы используете таблицу note дважды, без псевдонима.

выполнить запрос

SELECT case.case_id,
   case.client_id,
   case.description,
   case.date_filed,
   case.date_closed,
   solicitor.solicitor_id,
   solicitor.first_name,
   solicitor.surname,
   SUM(note.time_spent) total_time_spent
FROM note, case
INNER JOIN note
ON note.case_id = case.case_id
INNER JOIN solicitor
ON solicitor.solicitor_id = note.solicitor_id
GROUP BY case.case_id,
   case.client_id,
   case.description,
   case.date_filed,
   case.date_closed,
   solicitor.solicitor_id,
   solicitor.first_name,
   solicitor.surname
ORDER BY note.case_id,
     case.date_filed;

Я изменил столбцы группы по предложению.

примечание находится в предложении from дважды. Простое правило: Никогда используйте запятые в предложении from. Тогда в предложении GROUP BY должны быть все неагрегированные столбцы в предложении FROM.

Кроме того, псевдонимы таблиц упростят запись и чтение запроса:

SELECT c.case_id, c.client_id, c.description, c.date_filed, c.date_closed,
       s.solicitor_id, s.first_name, s.surname,
       SUM(n.time_spent)as  total_time_spent
FROM case c INNER JOIN
     note n
     ON n.case_id = c.case_id INNER JOIN
     solicitor s
     ON s.solicitor_id = n.solicitor_id
GROUP BY c.case_id, c.client_id, c.description, c.date_filed, c.date_closed,
         s.solicitor_id, s.first_name, s.surname,
ORDER BY c.case_id, c.date_filed;

И, case - плохое имя для таблицы, потому что это ключевое слово SQL. Это не зарезервированное слово Oracle, но все равно выглядит неудобно.

2022 WebDevInsider