기본 쿼리의 결과에 따라 하위 쿼리에서 WHERE 절이 필요합니다. 그렇지 않으면 내 결과가 잘못되고 쿼리가 너무 오래 걸리고/않습니다 실행할 수 있습니다.MySQL 쿼리 (하위 쿼리의 mainquery 액세스)
검색 서버에 필요한 뷰를 만들 때이 쿼리가 필요한 상황에서이 쿼리를 두 개의 쿼리로 나눌 수없고 스크립트로 동적으로 처리 할 수 없다는 문제를 지원합니다.
문제는 다음과 같은 쿼리를 발생
SELECT `s`.`id` AS `seminar_id`, (SUM(`sub`.`seminar_rate`)/COUNT(`sub`.`seminar_id`)) AS `total_rate`
FROM
(
SELECT (SUM(value)/COUNT(*)) AS `seminar_rate` , `r`.`seminar_id`
FROM `rating` r
INNER JOIN `rating_item` ri ON `r`.`id` = `ri`.`rating_id`
WHERE `r`.`seminar_id` = `s`.`id`/* <- Here is my problem, this is inacessible */
GROUP BY `r`.`seminar_id`
) AS sub,
`seminar` s
INNER JOIN `date` d
ON `s`.`id` = `d`.`seminar_id`
INNER JOIN `date_unit` du
ON `d`.`id` = `du`.`date_id`
LEFT JOIN `seminar_subject` su
ON `s`.`id` = `su`.`seminar_id`
LEFT JOIN `subject` suj
ON `su`.`subject_id` = `suj`.`id`
INNER JOIN `user` u
ON `s`.`user_id` = `u`.`id`
INNER JOIN `company` c
ON `u`.`company_id` = `c`.`id`
GROUP BY `du`.`date_id`, `sub`.`seminar_id`
이 쿼리는 각 세미나에 대한 평가에서 총 비율을 계산한다. 그러나 등급은 내 "등급"테이블에 저장되므로 실시간으로 처리해야합니다.
(Sidenote : 모든 조인에 대해 궁금한 사람 :이 쿼리는 SELECT로 연결된 필드가 더 많습니다. 문제를 해결하고 쿼리의 복잡성을 덜어주기 위해 nesessary가 아니기 때문에 삭제했습니다. 여전히>.>] ...)
이유는 내가이 검색 결과를 나중에 사용자 검색 매개 변수에 따라 에 의존하여 검색 엔진에서 정렬 할 수있게하려는 것입니다.이 쿼리 내에서 필요합니다.
문제 자체는 매우 분명하다 : 1054 (42S22) ERROR : 해결책은 알 수없는 열이 'where 절'은 부속 나던 메인 쿼리의 결과에 대해 알고
에 's.id'가있다 이걸 무시해?
누군가 나에게이 작업을위한 힌트를 줄 수 있습니까?
미리 감사드립니다.
나는 이것을보고 싶다! - 누가 먼저 왔어? 닭이나 계란? - (귀하의 질문) –