안녕하세요! 선배님들 궁금한것이 있어서 질문 올립니다.. 0 3 1,437

by 김성진 count limit mybatis [2022.03.18 08:48:50]


캡처1.PNG (9,469Bytes)
캡처2.PNG (9,212Bytes)
캡처3.PNG (29,844Bytes)
캡처4.PNG (34,340Bytes)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
SELECT  DISTINCT
        aa.subject_code
        ,aa.user_code
        ,aa.another_user_code
        ,aa.message_uid
        ,aa.user_delete
        ,aa.message_accept
        ,aa.message_reject
        ,bb.user_nick                  
        ,bb.mylocation             
        ,cc.subject                
        ,cc.study_prepar
        ,cc.school_year
        ,dd.univers_name           
        ,dd.first_age
        ,dd.last_age
        ,dd.user_age
        ,dd.user_gender
        ,dd.demo_lesson
        ,dd.face_lesson
        ,dd.full_lesson
        ,dd.lesson_price
        ,dd.first_price
        ,dd.last_price
        ,ff.price  
        ,SUBSTRING(message_time,3,14) AS message_time
        ,(SELECT COUNT(message_confirm)FROM message  WHERE aa.subject_code =ee.subject_code  AND  aa.another_user_code = ee.another_user_code AND message_confirm = 'N')AS message_confirm
    FROM
        message_user AS aa
    LEFT OUTER JOIN
        user AS bb
    ON
        aa.another_user_code = bb.user_code
    JOIN
        subjects AS cc
    ON
        aa.subject_code = cc.subject_code
    JOIN
        stucondition AS dd
    ON
        aa.subject_code = dd.subject_code
    LEFT OUTER JOIN
        matching AS ff
    ON
        aa.subject_code = ff.subject_code
    LEFT OUTER join
        message AS ee
    on
        aa.subject_code = ee.subject_code      
    WHERE
        aa.user_code = '5'
    AND
        aa.user_delete = 0

 

메세지 방 리스트를 불러오는 쿼리입니다... 

메세지 인원은  (user_code 본인)  , (another_user_code 상대방 입니다) 

메세지 방 리스트를 불러올때 substring 을 써서 마지막 메세지의 시간을 가저오고 있구요!

서브쿼리를 써서 카운트를 하려고 하는데 오류가 있는 것 같아서 질문드립니다...

현재 이렇게 대화방이 있습니다 

5          7 

5          6

message_confirm 이 읽음처리이고 N으로 되어있는 거만 카운트 되게 하려고 했는데

저렇게 쿼리를 써버리니  5,7번 5.6번 방의 합산된 카운트를 가저오게 되어서 서브쿼리의  

aa.subject_code =ee.subject_code 이부분이 잘못된건지 도통 감이 잡히지 않아서 질문드립니다 ㅠㅠ 

현재 5번과 연결된 채팅방이 2개 이기 때문에

6번 1개  7번 1개가 나와야 하는데 쿼리도 어디서 꼬인 것 같은데 어디서 꼬인지 모르겠어서 ㅠㅠ

도움 주시면 감사하겠습니다

by 김성진 [2022.03.18 08:50:10]

테이블은 현재 아래 두개를 쓰고 있습니다..


by 마농 [2022.03.18 09:09:32]

Distinct 는 왜 쓰나요?
- 필요에 의해서 정확한 의도를 가지고 쓴 것인지?
- 쿼리를 잘못 작성하여 발생된 중복을 억지로 커버하려고 쓴 것인지?
대부분의 경우 Distinct 가 필요한 경우는 거의 없습니다.
잘못된 조인이 원인일 듯 합니다.
메인쿼리에 message AS ee 에 대한 조인을 제거하고,
서브쿼리에 message 에 대해 별칭 ee 를 부여해야 합니다.


by 김성진 [2022.03.18 09:33:29]

distinct 는 중복처리 된 값때문에 쓰게 되었습니다 ㅠㅠ 도움주셔서 감사합니다 풀어보겠습니다!

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