반응형
이 경우 하위 쿼리로 조인하고 deptid를 조인 된 하위 쿼리에 전달하고 싶지만 'D가 정의되지 않았습니다'오류 메시지가 표시됩니다.
SELECT *
FROM(
SELECT D.name AS deptname,D.id AS deptid,WT.sortposition AS deptsortposition
FROM departments D JOIN web_taxonomy WT ON (WT.deptid=D.id AND WT.classid=0)
WHERE D.web=1
ORDER BY sortposition
) AS D
LEFT JOIN (
SELECT C.name AS classname,C. id AS classid,C.department,WT.sortposition AS classsortposition,WT.deptid
FROM classes C
JOIN web_taxonomy WT ON (WT.classid=C.id AND WT.subclassid=0 AND WT.deptid=D.deptid)
WHERE web=1 ORDER BY classsortposition
) AS C ON (C.department=D.deptid)
위의 강력한 태그로 감싼 것과 유사한 참조를 전달할 방법이 있습니까?
편집 : 실수를 저질렀 고 원래 작업 쿼리를 남겨두고 기능하고 싶은 부분을 추가했습니다. 기본적으로 D 하위 쿼리 테이블에서 발견 된 것과 동일한 deptid를 공유하는 행만 이미 가져 와서 조인 하위 쿼리의 크기를 최소화하고 싶습니다.
해결 방법
별칭을 지정하는 하위 쿼리 내에서 별칭 "D"를 사용할 수 없습니다.
이것은 작동합니다 (첫 번째 하위 쿼리에서 D 대신 X를 사용합니다-꼭 필요하지는 않지만 가독성을 높이고 D에 대한 참조를 두 번째 하위 쿼리 외부로 이동).
SELECT *
FROM(
SELECT
X.name AS deptname
, X.id AS deptid
, WT.sortposition AS deptsortposition
FROM departments X
JOIN web_taxonomy WT ON (WT.deptid=X.id AND WT.classid=0)
WHERE X.web=1
ORDER BY sortposition
) AS D -- this is available to objects referencing this alias
LEFT JOIN (
SELECT
C.name AS classname
, C. id AS classid
, C.department
, WT.sortposition AS classsortposition
, WT.deptid
FROM classes C JOIN web_taxonomy WT
ON WT.classid=C.id AND WT.subclassid=0
WHERE web=1 ORDER BY classsortposition
) AS C ON C.department=D.deptid AND C.deptid = D.deptid -- i.e. here
참조 페이지 https://stackoverflow.com/questions/19911146
반응형
'MySql' 카테고리의 다른 글
MySQL crontab에서 비밀번호가없는 mysqldump (0) | 2020.12.18 |
---|---|
MySQL mysql 트랜잭션-모든 예외에서 롤백 (0) | 2020.12.18 |
MySQL innodb-log-file-size 변경 방법 (0) | 2020.12.18 |
MySQL MYSQL은 특정 값과 같은 각 열의 수를 얻습니다. (0) | 2020.12.18 |
MySQL Windows에서 MySQL 및 Python 용 mysqlDb를 설치하는 방법 (0) | 2020.12.18 |
댓글