이제 db에 입문하였습니다.
기초 지식이 없는 상태에서 mssql 쿼리문을 mariaDB 쿼리문으로 바꾸고 있는데요.
제대로 되지 않아 이렇게 문의를 드립니다.
2개의 테이블이 아래와 같이 있습니다.
테이블명 : tb1
| COL1 | COL2 |
| 1A | L1 |
| 1A | L2 |
| 1A | L3 |
| 1A | L4 |
| 1A | L5 |
| 1A | L6 |
| 1A | L7 |
테이블명 : tb2
| COL2 | COL3 | COL4 |
| L1 | Y | P3 |
| L2 | Y | P3 |
| L3 | Y | P3 |
| L3 | Y | P3 |
| L4 | Y | P3 |
| L5 | Y | P3 |
| L6 | Y | P3 |
| L6 | Y | P3 |
| L7 | Y | P2 |
쿼리문은
SELECT COL2, ISNULL(( SELECT COUNT(*) FROM ( SELECT MAX(COL3) AS TEST FROM tb2 WHERE (COL2 = A.COL2 AND COL3 = 'Y') GROUP BY COL4 ) T) , 0) AS TEST_R FROM tb1 A
이렇게 사용하여 다음 결과를 얻고 싶습니다.
| COL2 | TEST_R |
| L1 | Y |
| L2 | Y |
| L3 | Y |
| L4 | Y |
| L5 | Y |
| L6 | Y |
| L7 | Y |
그런데, 아래와 같이 에러가 나타납니다.
SQL Error [1054] Unknown column 'A.COL2' in 'where clause'
아무리 찾아봐도 해결을 하지 못하여 이렇게 질문드립니다.
어떻게 쿼리문을 변경하면 처리할 수 있을까요?
감사합니다.
outer join으로 바꿔야할듯 합니다.
SELECT
A.COL2, TEST
FROM tb1 A
LEFT JOIN (SELECT COL2, MAX(COL3) TEST FROM tb2) T
ON A.COL2 = T.COL2
귀한 시간을 내주셔서 가르쳐 주심을 감사드립니다.
가르쳐주신대로 하고 공부하겠습니다.
SELECT a.col2
, IFNULL(MAX(b.col3), 'N') test_r
FROM tb1 a
LEFT OUTER JOIN tb2 b
ON a.col2 = b.col2
AND b.col3 = 'Y'
GROUP BY a.col2
;
귀한 시간 내셔서 가르쳐주신 것에 대해 감사드립니다.
말씀하신대로 하니 원하는 것을 얻을 수가 있었습니다.
이 쿼리문도 서브 쿼리문이라 조금더 해봐야 하는데,
가르쳐주신 것을 기반으로 공부하겠습니다.
감사합니다.