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 |
위와 같은 결과값을 쿼리문으로 추출이 가능한지 궁금합니다.
억지로 찾을 수도 있겠지만
테이블 설계를 바꿔야 합니다.
이름은 동명이인도 가능하고
폰번호는 여러개 가질 수도 있고
생년은 잘 못 기입 할 수 도 있고. 등등
가입용 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 ;
음 폰번호 같은 경우는 본인 명의로 등록된 폰으로만 회원가입이 가능해서
여러개가 가능한지는 모르겠습니다. 인증 절차를 거친 회원만 가입이 가능한 상태라
동명이인은 충분히 가능성이 있는거 같습니다. 그 부분은 생각해봐야겠네요 ㅠ
아래 알려주신 쿼리문으로 테스트를 해봤는데 원하는 행 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