MySQL의 비교 :MySQL은 다른 제약 조건으로 두 개의 서로 다른 테이블을 비교 두 개의 다른 테이블</p> <p>나는 이러한 구조를 가진 두 개의 테이블이의
표 1
FullContact
-----------
id
name
phone
address
email
phone
registration
marketingId
created
표 2
Contacted
-----------
first_name
last_name
email
FullContact 테이블에 사람이 있고 Contacted에 동일한 개인이 포함되어있을 수 있습니다. 그러나 이상한 기둥 구조로 나에게 돌아온다.
FullContact에 중복이있을 수 있으며 Contacted에 중복 된 항목이 없을 수 있습니다.
주 목표 : ContactContact에서 얼마나 많은 사람들이 FullContact에 있는지보고 싶습니다. 쿼리의
SELECT distinct fc.name, fc.email, fc.phone, concat_ws(" ",c.first_name, c.last_name),
c.phone from Contacted c
INNER JOIN FullContact fc
ON (concat_ws(" ", c.first_name,
c.last_name) = fc.name or c.email = fc.email or (fc.phone REGEXP '[0-9]+$') = c.phone)
and fc.created >= '2011-11-01';
설명 :
내가 실행하려고 쿼리는이 양식입니다 나는 내부 조인 사용 제약에 의해 접촉과 동일 FullContact에서 항목을 선택하는 것을 시도하고있다 세 개의 문자열 매개 변수와 날짜 매개 변수로
문제점 : FullContact의 항목 및 Contacted의 항목을 표시하기 위해 select 문을 작성했습니다. 결과에는 FullContact 열이 고유하고 Contact 값이 복제됩니다.
올바른 쿼리입니까?
감사합니다.
나는 별개의 문장이 기능과 같은 그룹화를 제공 할 것이라고 생각했다. 그러나 fc.name 열에 대해서만 신경을 쓰므로 문을 잘못 작성했습니다. 쿼리에 대한 한 가지 문제는 올바른 출력을 얻고 있는지 확인하기 위해 많은 노력을 기울여야한다는 것입니다. 나는 질의를 이메일 확인, 전화 확인 및 이름 확인으로 나눴다. 이후 나는 모든 경기를 수동으로 확인할 수 있습니다. 이것이 내가 지금 발견 한 가장 효율적인 방법이었습니다. – Alex
그룹화는 추가 단계입니다. 아마도 어쨌든 세 비트로 나누어 이해하기 쉬울 것입니다. –