programing

파생된 모든 테이블에 별칭이 있습니다!'오류 1248: 파생된 모든 테이블에는 고유한 별칭이 있어야 합니다'라는 메시지가 표시되는 이유는 무엇입니까?

kingscode 2023. 8. 9. 22:17
반응형

파생된 모든 테이블에 별칭이 있습니다!'오류 1248: 파생된 모든 테이블에는 고유한 별칭이 있어야 합니다'라는 메시지가 표시되는 이유는 무엇입니까?

이 쿼리를 실행할 때마다 다음 메시지가 표시됩니다.

오류 1248(42000):파생된 모든 테이블에는 고유한 별칭이 있어야 합니다.

보다시피 하위 쿼리에 의해 생성된 파생 테이블에 대해 조인을 남긴 상위 쿼리가 있습니다.

이 하위 쿼리는 두 번째 파생 테이블에서 선택하고 내부는 세 번째 파생 테이블에 결합합니다.

세 개의 파생된 테이블 모두 적절한 별칭을 가집니다(n1,n2그리고.subquery)

하위 쿼리는 독립적으로 실행할 때 예상대로 실행됩니다.이 문제는 상위 쿼리에 래핑할 때만 발생합니다.

쿼리:

SELECT DATE_FORMAT(p.date_admitted, '%Y-%m') as month_admitted,
  diagnosis as diagnosis,
  education as education,
  COUNT(*) as total 
FROM patient_discharge_form d 
INNER JOIN survey_data sd ON sd.id = d.id 
LEFT JOIN submission s ON s.id = sd.submission_id 
LEFT JOIN patient p ON p.id = s.patient_id 
LEFT JOIN (
  SELECT n1.id,n1.diagnosis,n2.education
  FROM (
          SELECT id,'Gest Hyp' as diagnosis FROM patient_discharge_form WHERE gestational_hypertension=1
          UNION ALL
          SELECT id,'Pre w/ Sev' FROM patient_discharge_form WHERE preeclampsia_non_severe=1
        ) n1 
  INNER JOIN (
          SELECT id,'Written' as education FROM patient_discharge_form WHERE education LIKE '%written%'
          UNION ALL
          SELECT id,'Verbal' FROM patient_discharge_form WHERE education LIKE '%verbal%'
        ) n2 ON n1.id=n2.id
) subquery ON d.id = subquery.id 
WHERE (s.status = 'complete') 
GROUP BY month_admitted, diagnosis, education

음... 쿼리에서 테이블 별칭에 문제가 없습니다.저는 이것이 당신이 실행하고 있는 쿼리인지 궁금합니다.

하지만 열 별칭에 문제가 있습니다.education의 란select(그리고 아마도.diagnosis역시) 애매합니다.둘 중 하나에서 올 수 있습니다.d또는subquery그리고 아마도 다른 테이블들도 마찬가지일 것입니다.

일반적으로 문제를 방지하려면 쿼리의 모든 열 이름을 한정해야 합니다.

언급URL : https://stackoverflow.com/questions/68965163/all-my-derived-tables-have-aliases-why-am-i-getting-error-1248-every-derived

반응형