mysql 쿼리 질문입니다. 0 4 378

by 뀨엉뀨엉 [2021.11.18 15:22:26]


id nickname name phonenumber birth
coy1754 a 홍길동 111 1991
coa1754 b 홍길동 111 1991
cot1754 c 희동이 222 2000
cow1754 d 희동이 222 2000
cob1754 e 홍길동 111 1991
coc1754 f 홍길동 111 1991

예를들어 위와 같은 회원테이블이 있습니다.

우선 1명의 회원이 최대 5개까지 id가 생성이 가능하고 아래 예시에서는 홍길동이 4개 희동이가 2개 씩 만든걸로 예를 든 상태입니다. 

이제 여기서 제가 얻고자 하는 테이블 결과는 'coy1754' 라는 컬럼 조건값 하나로 홍길동이 가지고 있는 나머지 id결과값들도 가져올 수 있는지 입니다.

(coy1754로 검색하면 나오는 쿼리 결과값) 홍길동이 저 id의 동일인이라고 판단하는 조건은 phonenumber 이나 birth로 판단합니다. 

id nickname name phonenumber birth
coy1754 a 홍길동 111 1991
coa1754 b 홍길동 111 1991
cob1754 e 홍길동 111 1991
coc1754 f 홍길동 111 1991

위와 같은 결과값을 쿼리문으로 추출이 가능한지 궁금합니다.

 

by 마농 [2021.11.18 15:44:01]

억지로 찾을 수도 있겠지만
테이블 설계를 바꿔야 합니다.
이름은 동명이인도 가능하고
폰번호는 여러개 가질 수도 있고
생년은 잘 못 기입 할 수 도 있고. 등등
가입용 ID 는 유니크하게 관리하고(회원가입시 본인인증)
그 ID 안에서 별도 사용용 ID 를 추가로 관리해야 합니다.

일단은 이름, 전화번호, 생년은 동일하다고 가정하고 시작합니다.

WITH t AS
(
SELECT 'coy1754' id, 'a' nickname, '홍길동' name, '111' phonenumber, '1991' birth
UNION ALL SELECT 'coa1754', 'b', '홍길동', '111', '1991'
UNION ALL SELECT 'cot1754', 'c', '희동이', '222', '2000'
UNION ALL SELECT 'cow1754', 'd', '희동이', '222', '2000'
UNION ALL SELECT 'cob1754', 'e', '홍길동', '111', '1991'
UNION ALL SELECT 'coc1754', 'f', '홍길동', '111', '1991'
)
SELECT b.*
  FROM t a
     , t b
 WHERE a.id          = 'coy1754'
   AND a.name        = b.name
   AND a.phonenumber = b.phonenumber
   AND a.birth       = b.birth
;

 


by 뀨엉뀨엉 [2021.11.18 15:52:40]

음 폰번호 같은 경우는 본인 명의로 등록된 폰으로만 회원가입이 가능해서 

여러개가 가능한지는 모르겠습니다. 인증 절차를 거친 회원만 가입이 가능한 상태라 

동명이인은 충분히 가능성이 있는거 같습니다. 그 부분은 생각해봐야겠네요 ㅠ 

아래 알려주신 쿼리문으로 테스트를 해봤는데 원하는 행 4개가 아니고 하나의 행만 나오는데 

제가 잘 못입력한 부분이 있을까요? table 이름이랑 컬럼명은 실제로 만들어져있는 테이블 명,컬럼 명으로 했습니다.

 

SELECT b.*
  FROM member a
     , member b
 WHERE a.d_userid          = 'coy1754'
   AND a.d_username        = b.d_username
   AND a.d_phone = b.d_phone
   AND a.d_byear       = b.d_byear


by 마농 [2021.11.18 15:57:49]

쿼리는 문제가 없어 보이고
해당 4개 데이터가 모두 다른게 아닐까? 생각되네요.
자료에 공백 등이 포함되지는 않았는지? 확인해 보세요.
폰은 충분히 여러개 일 수 있습니다.

아니면 혹시 username 이란 부분이 실명이 아닌 닉네임 항목 아닌가요?


by 뀨엉뀨엉 [2021.11.18 16:05:11]

username은 실명이고 nickname 이라고 닉네임 항목은 따로 있는 상태입니다. 
아 지금보니 coy1754 계정의 birth를 테스트를 위해서 임의로 바꾼 상태였습니다.
말씀하신대로 원하는 결과가 나오네요 흠...  조언해주신대로 폰이나 동명이인 같은 부분때문에 테이블 구조 변경을 확인해봐야겠네요 감사합니다.

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