sql 질문 드립니다.. 0 3 155

by 구름 [2021.11.23 11:00:34]


SELECT c.apple, c.strawberry, c.a1, c.a2, d.intNo,
if(c.a1 = d.intNo, d.name, NULL) AS '1차',
if(c.a2 = d.intNo, d.name, NULL) AS '2차'
FROM
(SELECT strawberry, apple,
SUBSTRING_INDEX(SUBSTRING_INDEX(apple,"|",2),"|",-1) AS 'a1', 
SUBSTRING_INDEX(SUBSTRING_INDEX(apple,"|",3),"|",-1) AS 'a2'
FROM fruits
)c left outer JOIN fname d ON d.intNo = c.strawberry

--------------

fruits Table

apple column

|23|25|

-------------

fname Table

intNo   name

23       파인애플

25       딸기

---------

result

1차 : 파인애플

2차 : 딸기

 

이렇게 만들고 싶습니다..ㅠㅠ

그런데,,. 여기서 계속 2차가 1차와 동일한 데이터가 나오는데, 2차 컬럼에는 2차 데이터가 나오게끔 부탁드립니다..ㅠㅠ

by 마농 [2021.11.23 11:22:50]

뭔가 많이 이상하네요.
사용된 테이블들의 예시 자료가 필요합니다.


by 마농 [2021.11.23 16:47:15]
WITH fruits AS
(
SELECT '|23|25|' apple
)
, fname AS
(
SELECT '23' intNo, '파인애플' name
UNION ALL SELECT '25', '딸기'
)
SELECT a.apple
     , a.a1
     , a.a2
     , b.name nm1
     , c.name nm2
  FROM (SELECT apple
             , SUBSTRING_INDEX(SUBSTRING_INDEX(apple, '|', 2), '|', -1) a1
             , SUBSTRING_INDEX(SUBSTRING_INDEX(apple, '|', 3), '|', -1) a2
          FROM fruits a
        ) a
  LEFT OUTER JOIN fname b ON a.a1 = b.intNo
  LEFT OUTER JOIN fname c ON a.a2 = c.intNo 
;

1, 조인 조건이 틀렸네요.
- a1, a2 를 이용해 조인해야 하는데?
- strawberry 로 조인하네요?
2. 따옴표 사용이 표준에 어긋나네요.
- 홑따옴표는 문자에 사용하고, 쌍따옴표는 별칭에 사용하는게 좋습니다.
- 반대로 사용했네요.


by 구름 [2021.11.23 17:12:52]

정말 감사합니다ㅠㅠㅠㅠㅠㅠ 정말 많은 도움이 되었어요!!!!!ㅠㅠㅠㅠㅠ 열심히 공부하겠습니다!!ㅠㅠ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입