나는 결합하고 싶은 3 개의 테이블을 가지고있다.mysql에서 잘못된 데이터를 처리하는 방법은 무엇입니까?
나는 다음과 같은 쿼리를 실행해야합니다 :
DROP TABLE
IF EXISTS testgiver.smart_curmonth_downs;
CREATE TABLE testgiver.smart_curmonth_downs
SELECT
ldap_karen.uid,
ldap_karen.supemail,
ldap_karen.regionname,
smart_curmonth_downs_raw.username,
smart_curmonth_downs_raw.email,
smart_curmonth_downs_raw.publisher,
smart_curmonth_downs_raw.itemtitle,
smart_items.`Owner`
FROM
smart_curmonth_downs_raw
INNER JOIN ldap_karen ON smart_curmonth_downs_raw.username = ldap_karen.uid
INNER JOIN smart_items ON smart_curmonth_downs_raw.itemtitle = smart_items.Title
나는 테이블 smart_curmonth_downs_raw의 행과 항상 일대일 관계를 유지하면서 조인을 만드는 방법을 알고 싶어요.
예를 들어 ldap_karen에 uid가없는 경우 문제가 있습니다. 그리고 내가 찾은 마지막 쟁점은 CMS가 중복 된 itemtitle을 허용한다는 것입니다. 그래서 내 쿼리를 실행하는 경우 각 항목에 대한 행을 만들기 때문에 훨씬 많은 행이 표시됩니다. 예를 들어 smart_items에있는 마지막 itemtitle 만 잡을 수있는 방법이 있습니다. 난 단지 같은 수의 행을 유지하기를 원할 것이고 다른 테이블의 무결성 문제를 제어 할 수는 없다.
smart_curmonth_downs_raw 테이블은 원시 다운로드 정보 (다운로드 통계)이고 karen 테이블은 고유 한 사용자 정보를 추가하며 smart_items 테이블은 고유 항목 (다운로드) 정보를 추가합니다. 그것들은 모두 중요합니다. 사용자가 다운로드를했지만 karen 테이블을 두드린 경우 사용자 정보가 NULL로 표시되고 동일한 이름을 가진 smart_items에 하나 이상의 항목이있는 경우 가장 높은 항목 만보고 싶습니다. 신분증. 오른쪽 테이블이 오른쪽 테이블의 컬럼 값으로 사용 NULL 존재하지 않는 경우
그것은smart_curmonth_downs_raw
와
ldap_karen
의 관계 같은 소리
smart_items에있는 ** 마지막 ** itemtitle을 어떻게 정의 하시겠습니까? 예를 들어 가장 최근의 datetime 값을 가진 열이 있습니까? 아니면 가장 큰 값을 원하는 증분 값입니까? (귀하의 질문에 smart_items 테이블 스키마를 공유해야합니다.) – AgRizzo
@AgRizzo - 죄송합니다. smart_items 테이블은 실제로 적절한 키가있는 유일한 테이블입니다. 그래서 테이블에서 가장 높은 "id"필드가됩니다. "smart_curmonth_downs_raw"로 보고서를 가져올 때 ID는 itemtitle이 아니라 ... 시작하지 마십시오. 내가 본 최악의 기업 CMS 중 하나에 대해 분명히 말할 수 있습니다. – blankip